Доброго всем времени суток. Обращаюсь к знатокам Apache и PHP. Проблема следующая. Мне необходимо настроить для работы коллектива тестеров утилиту TestLink http://teamst.org/ , которая работает на PHP. В качестве пробного экземпляра я установил себе на ноутбук (Ubuntu 8.04) apache+mysql+php и собственно testlink. Все поднялось и заработало. Я было обрадовался и бросился инсталлировать на рабочую станцию Arch в целях подготовки и использования его в дальнейшем в качестве веб-сервера. Все замечательно установилось. Все настроил. Но TestLink выдает странную ошибку: не позволяет изменять поля через веб-формы. Я было грешил на MySQL но phpMyAdmin работает и проблем с этим нет. А раз phpMyAdmin работает, то и PHP настроен верно. На баг-трекере меня послали на форум, объявив, что проблемы установки не являются причиной, чтобы загружать разработчиков. А на форуме тишина... В логах тестлинка светится только вот это сообщение: Код (Text): [11/Apr/4 08:10:22][WARNING][<nosession>][GUI] E_WARNING Invalid argument supplied for foreach() - in /srv/http/testlink/lib/functions/cfield_mgr.class.php - Line 104 В строке 104 в указанного файла вызываются (или объявляются) переменные: Код (Text): 99: // Copied from mantis, allow load of user custom implementations 100: // some sort of poor's man plugin 101: $cf_files=glob( TL_ABS_PATH . "custom/cf_*.php"); 102: if( count($cf_files) > 0 ) 103: { 104: foreach($cf_files as $inc) 105: { 106: require_once($inc); 107: } 108: } Я в PHP, как свинья в яблоках... мне кажется, что не хватает какого-то модуля или библиотеки, но не могу понять какой. В error_log и access_log апача записей нет. в error_php.log тоже пусто. Не знаю, где искать концы. Буду рад любому совету. Заранее спасибо.
Забыл добавить, что, если установить XAMPP, а не отдельными компонентами сервер настраивать, то данная ошибка не возникает.
попробуй после строки 101 написать PHP: <?php var_dump(TL_ABS_PATH . "custom/cf_*.php"); var_dump($cf_files); exit(); посмотришь хоть, что в этих переменных
вписал - вообще все работать перестало.. но под XAMPP все работает отлично. значит какая-то связка неверно настроена. что можно проанализировать на наличие ошибок? что искать?
Я, кажется, нашел ошибку, но не знаю, как поправить. Не хватает опыта. Описываю. Testlink каждое событие пишет в лог. Логи находятся тут: /srv/http/testlink/logs/ решив их изучить, я обратил внимание, что там достаточно старые записи. Полез в логи апача и в error_log нашел следующее: Код (Text): [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.168.1.5/testlink/lib/usermanagement/userInfo.php То есть, если я правильно понял, PHP не может получить доступ к файлам. Предполагаю, что недостаточно разрешений на доступ к папке logs. Выполняю #chmod 777 /srv/http/testlink/logs. Перезапускаю службы, ничего не меняется. Меняю в config.inc.php этой утилиты параметр отвечающий за расположение директории с журналами на свой домашний каталог. Создаю там папку logs, даю ей 777. Перезапускаю, получаю: Код (Text): [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 Опыта решить проблему не хватает. Подскажите, люди добрые, куда копать. Заранее спасибо.
Поизучав просторы сети и синтаксис языка, я написал скрипт, который пытается что-либо записать куда-либо. И выдает в браузер результат своей работы. PHP: <?php $msg = "TEST"; $fp = fopen ("/home/testlink/test.log", "a+"); if ($fp != false) { fwrite ($fp,$msg); print "OK"; fclose ($fp); } else { print "Fail"; } ?> Сие творение было опробовано на двух машинах. На одной связка Apache+PHP+Testlink работает, на другой нет. Собственно, результат был предсказуемым. На той машине, где все работает, скрипт создал файл, записал в него строчку и сказал "ОК", а там, где не работает ограничился "Fail"ом. То есть причина все-таки к доступе апача к файлам в DocumentsRoot... но на все дан доступ 777 и поэтому я сконфужен...
все. разобрался. проблема заключалась в запрете доступа к iconv.so. раскомментировал строчку в php.ini все заработало. тем, не менее, за эту неделю, благодаря этому недосмотру, я достаточно много узнал о настройке Apache и работе PHP
сэкономили на админе - потеряли неделю жизни всех, кто ждал результата. в деньгах интересно это сколько?