У нас есть веб-сервер (Debian, с Apache2, PHP4 и MySQL), используемый в интрасети. Его основное использование - обслуживание страниц с данными и графиками, динамически генерируемыми (с использованием jpgraph) из данных, хранящихся в БД.
Он отлично работал в течение нескольких лет, но на этой неделе мы обнаружили, что все, что связано с графиками, не работает. Сюда входят рисунки, сгенерированные jpgraph и gnuplot, оба зависят от библиотеки gd. Также нет ссылок на «gd» в phpinfo (), и любой прямой вызов функций gd (например, gd_info ()) приводит к ошибке.
Мы пытались переустановить php4-gd (и перезапустить Apache) безрезультатно. Очевидно, мы сделали что-то не так, но мы не можем понять, что это такое.
Что мы могли сделать? Есть ли какой-либо другой диагноз, который мы можем сделать, чтобы изолировать проблему?
Спасибо.
Задача решена. Проверка журнала apache /var/log/apache2/error.log
после каждого перезапуска обнаруживалась следующая строка:
PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/20050606+lfs/gd.so' - /usr/lib/php
4/20050606+lfs/gd.so: undefined symbol: gdImagePngCtx in Unknown on line 0
Проблема решилась комбинацией добавления строки: extensions_dir = "/usr/lib/php4/20050606+lfs/
к /etc/php4/apache2/php.ini
и делать то, что описано в bugs.debian.org, это в основном удаление из / usr / local / lib всех библиотек libgd.so * (?).
Не спрашивайте меня, почему, но после перезапуска Apache все снова заработало. Все еще не знаю, что мы сделали ... Конечно, вероятно, пора для полной переустановки и обновления сервера.
Спасибо за ваш интерес.
Возможно ли, что на вашем компьютере установлено несколько версий PHP, некоторые с поддержкой gd, а некоторые без, и что вы ссылаетесь не на ту?
Предполагая, что вы сохранили все в пакетах, загляните в /var/log/dpkg.log
для любых пакетов, которые были изменены (установлены, обновлены или удалены) примерно в то время, когда все развалилось.
Другая вероятная проблема заключается в том, что extension
строка в php.ini для плагина gd пошла блужданием; Он должен быть ближе к нижней части /etc/php4/apache2/php.ini
(или похожие); добавьте его, если он отсутствует, и перезапустите Apache, посмотрите, к чему это приведет.