За последние 24 часа нас посетили 16749 программистов и 1644 робота. Сейчас ищут 1142 программиста ...

LAMP на Archlinux (Testlink): ошибка доступа к файлам

Тема в разделе "Вопросы от блондинок", создана пользователем mrjingles, 5 апр 2011.

  1. mrjingles

    mrjingles Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    7
    Симпатии:
    0
    Доброго всем времени суток.

    Обращаюсь к знатокам Apache и PHP. Проблема следующая. Мне необходимо настроить для работы коллектива тестеров утилиту TestLink http://teamst.org/ , которая работает на PHP. В качестве пробного экземпляра я установил себе на ноутбук (Ubuntu 8.04) apache+mysql+php и собственно testlink. Все поднялось и заработало. Я было обрадовался и бросился инсталлировать на рабочую станцию Arch в целях подготовки и использования его в дальнейшем в качестве веб-сервера.

    Все замечательно установилось. Все настроил. Но TestLink выдает странную ошибку: не позволяет изменять поля через веб-формы. Я было грешил на MySQL но phpMyAdmin работает и проблем с этим нет. А раз phpMyAdmin работает, то и PHP настроен верно.

    На баг-трекере меня послали на форум, объявив, что проблемы установки не являются причиной, чтобы загружать разработчиков. А на форуме тишина...

    В логах тестлинка светится только вот это сообщение:

    Код (Text):
    1. [11/Apr/4 08:10:22][WARNING][<nosession>][GUI]
    2.                 E_WARNING
    3. Invalid argument supplied for foreach() - in /srv/http/testlink/lib/functions/cfield_mgr.class.php - Line 104
    В строке 104 в указанного файла вызываются (или объявляются) переменные:

    Код (Text):
    1. 99:   // Copied from mantis, allow load of user custom implementations
    2. 100: // some sort of poor's man plugin
    3. 101: $cf_files=glob( TL_ABS_PATH . "custom/cf_*.php");
    4. 102:  if( count($cf_files) > 0 )
    5. 103: {
    6. 104:      foreach($cf_files as $inc)
    7. 105:    {
    8. 106:        require_once($inc);
    9. 107:    }
    10. 108: }
    Я в PHP, как свинья в яблоках... мне кажется, что не хватает какого-то модуля или библиотеки, но не могу понять какой. В error_log и access_log апача записей нет. в error_php.log тоже пусто. Не знаю, где искать концы.

    Буду рад любому совету.
    Заранее спасибо.
     
  2. mrjingles

    mrjingles Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    7
    Симпатии:
    0
    Забыл добавить, что, если установить XAMPP, а не отдельными компонентами сервер настраивать, то данная ошибка не возникает.
     
  3. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    попробуй после строки 101 написать
    PHP:
    1. <?php
    2. var_dump(TL_ABS_PATH . "custom/cf_*.php");
    3. var_dump($cf_files);
    4. exit();
    посмотришь хоть, что в этих переменных
     
  4. mrjingles

    mrjingles Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    7
    Симпатии:
    0
    вписал - вообще все работать перестало..

    но под XAMPP все работает отлично. значит какая-то связка неверно настроена. что можно проанализировать на наличие ошибок? что искать?
     
  5. mrjingles

    mrjingles Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    7
    Симпатии:
    0
    Я, кажется, нашел ошибку, но не знаю, как поправить. Не хватает опыта. Описываю.

    Testlink каждое событие пишет в лог. Логи находятся тут: /srv/http/testlink/logs/ решив их изучить, я обратил внимание, что там достаточно старые записи. Полез в логи апача и в error_log нашел следующее:

    Код (Text):
    1. [Sun Apr 03 20:18:21 2011] [error] [client 192.168.1.4] PHP Warning:  fopen(/srv/http/testlink/logs/userlog1.log): failed to open stream: Permission denied in /srv/http/testlink/lib/functions/logger.class.php on line 948, referer: http://19
    2. 2.168.1.5/testlink/lib/usermanagement/userInfo.php
    То есть, если я правильно понял, PHP не может получить доступ к файлам.

    Предполагаю, что недостаточно разрешений на доступ к папке logs. Выполняю #chmod 777 /srv/http/testlink/logs. Перезапускаю службы, ничего не меняется. Меняю в config.inc.php этой утилиты параметр отвечающий за расположение директории с журналами на свой домашний каталог. Создаю там папку logs, даю ей 777. Перезапускаю, получаю:

    Код (Text):
    1. [Sun Apr 03 22:06:27 2011] [error] [client 192.168.1.4] PHP Warning:  fopen(/home/me/logs/userlog1.log): failed to open stream: Permission denied in /srv/http/testlink/lib/functions/logger.class.php on line 948, referer: http://192.168.1.5/testlink/lib/usermanagement/userInfo.php
    Опыта решить проблему не хватает. Подскажите, люди добрые, куда копать.
    Заранее спасибо.
     
  6. mrjingles

    mrjingles Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    7
    Симпатии:
    0
    Поизучав просторы сети и синтаксис языка, я написал скрипт, который пытается что-либо записать куда-либо. И выдает в браузер результат своей работы.

    PHP:
    1. <?php
    2. $msg = "TEST";
    3. $fp = fopen ("/home/testlink/test.log", "a+");
    4.  
    5. if ($fp != false)
    6.  {
    7.     fwrite ($fp,$msg);    
    8.     print "OK";
    9.     fclose ($fp);
    10.  }
    11.  else
    12.  {
    13.     print "Fail";
    14.  }
    15. ?>
    Сие творение было опробовано на двух машинах. На одной связка Apache+PHP+Testlink работает, на другой нет. Собственно, результат был предсказуемым. На той машине, где все работает, скрипт создал файл, записал в него строчку и сказал "ОК", а там, где не работает ограничился "Fail"ом. То есть причина все-таки к доступе апача к файлам в DocumentsRoot... но на все дан доступ 777 и поэтому я сконфужен...
     
  7. mrjingles

    mrjingles Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    7
    Симпатии:
    0
    все. разобрался.
    проблема заключалась в запрете доступа к iconv.so.
    раскомментировал строчку в php.ini все заработало.

    тем, не менее, за эту неделю, благодаря этому недосмотру, я достаточно много узнал о настройке Apache и работе PHP :D
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сэкономили на админе - потеряли неделю жизни всех, кто ждал результата. в деньгах интересно это сколько? :D
     
  9. mrjingles

    mrjingles Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    7
    Симпатии:
    0
    нет жестких сроков) это экспериментальная площадка.