PHP видит установленные вручную расширения только в режиме CLI. Как заставить его их увидеть при запуске в качестве модуля Apache?
Пренеприятнейшая ситуация — PHP 5.4, а также 5.5 на моём сервере (CentOS) наотрез отказываются видеть расширения, которые я устанавливаю сам.
Пробовал с Runkit и MongoDB, и везде одни и те же симптомы: при запуске скрипта через командную строку, а также при вызове php -m, эти расширения прекрасно работают и видны. Однако стоит вызвать скрипт через браузер, и на этом всё: Class Mongo not found.
То же самое с Runkit.
Первоначально подозревал, что может быть два разных php.ini, однако проверил через phpinfo — нет, в обоих случаях используется один и тот же конфиг. Более того, в обоих случаях PHP "подхватывает" mongo.ini (в котором строка: extension=mongo.so), что также видно в phpinfo(). Но само расширение не загружается.
display_startup_errors результата не даёт - тишина.
Выполнение setenforce 0 в командной строке также не помогло.
Файлы .so лежат в /usr/lib64/php/modules/, и в /usr/lib64/php-zts/modules/. В php.ini указан второй путь.
Собираются они нормально, без ошибок — как через pecl install, так и вручную.
Могу посоветовать только включить максимальное логирование в php и посмотреть, что попадет в лог ошибок. Если php не может загрузить раширение обычно об этом пишется в лог.
В apache error-логе точно нет никаких сообщений о событии?
Расширения для apache должны быть собраны с zts и лежать в папке /usr/lib64/php-zts/modules/. Это должны быть другие файлы, нежели в каталоге /usr/lib64/php/modules/, их нужно компилировать с другими флагами. Попробуйте использовать опцию --with-php-config при запуске ./configure перед сборкой модуля (сборка обычно состоит из трех частей: phpize, ./configure, make install).