Ладно, это, наверное, просто я недостаточно знаю о php, но здесь все сказано.
Я нахожусь на Ubuntu Hardy. У меня есть пользовательская скомпилированная версия PHP, которую я скомпилировал с этими параметрами.
./configure
--enable-soap
--with-zlib
--with-mysql
--with-apxs2=[correct path]
--with-config-file-path=[correct path]
--with-mysqli
--with-curlwrappers
--with-curl
--with-mcrypt
Я использовал команду pecl install pecl_http
для установки расширения http.so. Он находится в правильной директории модуля для моего php.ini. Мой php.ini загружается, и я могу что-то менять в ini и влиять на php. Я включил строку extension=http.so
в свой php.ini.
Это сработало нормально. Пока я не добавил эти параметры компиляции, чтобы добавить imap
--with-openssl
--with-kerberos
--with-imap
--with-imap-ssl
Что не удалось, потому что мне была нужна библиотека c-client, которую я исправил apt-get install libc-client-dev
После чего php прекрасно компилируется и у меня работает поддержка imap, woo.
ОДНАКО, теперь все мои вызовы HttpRequest, который является частью расширения pecl_http в http.so, приводят к Fatal error: Class 'HttpRequest' not found
ошибкам. Я полагаю, что модуль http.so больше не загружается по той или иной причине, но я не могу найти никаких ошибок, показывающих причину.
Вы можете сказать: «Вы пытались отменить новую настройку imap?» На что я отвечу. Да, у меня есть. Я непосредственно отменил все свои изменения конфигурации и удалил библиотеку c-client, и я все еще не могу заставить ее работать. Я думал, что это странно ... Я не сделал никаких изменений, которые привели бы к этой проблеме. Посмотрев на это, я также обнаружил, что не только расширение http больше не загружается, но и все мои расширения, загруженные через php.ini, больше не загружаются.
Может кто-нибудь хотя бы дать мне дальнейшие шаги по отладке? До сих пор я пытался включить все ошибки, включая ошибки запуска, в моем php.ini, который работает для других ошибок, но я не вижу никаких ошибок запуска ни в командной строке, ни через apache. И все же снова php.ini, кажется, анализируется, учитывая, что если я запускаю php_info (), я получаю настройки, которые есть в php.ini.
Редактировать Похоже, что прослушиваются только некоторые настройки php.ini. Есть ли способ проверить мой php.ini?
Редактировать Редактировать Кажется, я снова ошибаюсь, и php.ini больше не загружается вообще. Однако, если я запускаю php_info (), я получаю, что он ищет мой php.ini в правильном месте.
Редактировать Редактировать Редактировать Моя конфигурация находится в пути к файлу конфигурации ниже, но она говорит, что файл конфигурации не загружен. WTF Разрешение? Это в настоящее время 644, поэтому каждый должен иметь возможность прочитать его, если не написать. Я попытался сделать это 777, и это не сработало.
Configuration File (php.ini) Path /etc/php.ini
Loaded Configuration File (none)
Редактировать Редактировать Редактировать Редактировать Загружая ini в командную строку с помощью команды -c, я могу запускать свои файлы, а использование -m показывает, что мои модули загружаются
Так что нет ничего плохого в php.ini
Редактировать Редактировать Редактировать Редактировать Редактировать Мне указали, что моя конфигурация директории ini должна быть путем, чтобы найти файл php.ini, а не сам файл. С этой целью я попробовал настройки / etc, / etc / и позволил php установить каталог по умолчанию, а затем переместить мой INI-файл в этот каталог. Все терпят неудачу :(
Редактировать Редактировать Редактировать Редактировать Редактировать Мне было указано, что моя конфигурация директории ini должна быть путем для поиска файла php.ini, а не самого файла. С этой целью я попробовал настройки / etc, / etc / и позволил php установить каталог по умолчанию, а затем переместить мой INI-файл в этот каталог. Все терпят неудачу: (
Редактировать Редактировать Редактировать Редактировать Редактировать Редактировать Дополнительная информация, запуск командной строки php --ini и ls of dir, на который он указывает, в настройках php. Также запускайте с параметром -c в командной строке, где запуск завершается успешно, а не тогда, когда я не включаю -c
j@j:/usr/local/lib$ php -ini | grep Configuration
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => (none)
Configuration
j@j:/usr/local/lib$ ls /usr/local/lib
php php.ini python2.5 site_ruby
j@j:/usr/local/lib$ php -c /usr/local/lib/php.ini /var/www/toolbelt/test.php
j@j:/usr/local/lib$ php /var/www/toolbelt/test.php
Fatal error: Class 'HttpRequest' not found in /var/www/toolbelt/test.php on line 7
jonathan@jonathan:/usr/local/lib$
Редактировать Редактировать Редактировать Редактировать Редактировать Редактировать Редактировать Дополнительная информация. Используя метод strace, показанный в другой статье по обмену стека, я протестировал, чтобы увидеть, были ли какие-либо попытки открыть INI-файл, сделанные при загрузке php. Там не было
j@j:/usr/local/lib$ sudo strace -e trace=open php -ini 2>&1 |grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
j@j:/usr/local/lib$ sudo strace -e trace=open php -ini 2>&1 |grep /usr/local/lib
Configuration File (php.ini) Path => /usr/local/lib
extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20060613 => /usr/local/lib/php/extensions/no-debug-non-zts-20060613
include_path => .:/usr/local/lib/php => .:/usr/local/lib/php