2010-08-11 3 views
2

Я пишу пользовательское расширение в PHP и загружаю расширение в файл php.ini. Расширение загружается и работает отлично при использовании интерфейса командной строки, но оно не загружается на веб-сервере (Cherokee с FastCGI). Чтобы задать некоторые вопросы, прежде чем их спросят, я определенно использую правильные файлы php.ini, и я правильно установил значение extension_dir. Даже когда я указываю полный путь для загрузки расширения, он не работает.PHP не загружает пользовательские расширения

Так что мне интересно, что я могу сделать для устранения этой проблемы. Я подозреваю, что это может быть связано с внешней зависимостью, потому что расширение загружалось штрафом, прежде чем я связал его с парой разделяемых библиотек. Однако я не вижу никаких признаков проблемы в /var/log/cherokee/cherokee.error. Любые другие идеи относительно того, как я могу определить проблему?

+0

Попробуйте переместить или переименовать один из файлов .so для одного из других расширений. Вы видите ошибку? Если нет, что-то не так с журналом ошибок. Кроме того, какую версию PHP вы используете? Возможно, вы захотите рассмотреть вопрос об обновлении до 5.3.3, который включает в себя отличную реализацию FastPGI «FPM». Что касается разделяемых библиотек, вы уверены, что они находятся в доступном месте? Я думаю, что переменная окружения, о которой идет речь, это 'LD_LIBRARY_PATH' или что-то еще ... – Charles

+0

Вы имеете в виду, что в журнале нет ошибки, говорящей, что расширение нельзя загрузить? – Artefacto

+1

Ошибок не было, но я понял, что это произошло потому, что error_log не был установлен в php.ini. Установив это в syslog, теперь я вижу, что расширение не загружается, потому что оно 32-бит, тогда как PHP и Cherokee - 64-битные. Я в процессе восстановления их 32-бит. Спасибо за помощь. – okalex

ответ

0

Хорошо, у меня есть работа после перестройки PHP и Cherokee на 32 бита (и исправления ошибки, возникшей после переключения на 32-разрядные). Еще раз спасибо.

Смежные вопросы