php zend_extension игнорируется при самостоятельной компиляции php

Я пытаюсь загрузить Zend Optimizer в мой самостоятельно скомпилированный php.

Вот как я собираю свой php:

wget http://museum.php.net/php5/php-5.2.6.tar.gz
tar xvfz php-5.2.6.tar.gz
cd php-5.2.6
./configure --prefix=/usr/local/php --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/etc/php5/apache2 --with-config-file-scan-dir=/etc/php5/apache2/conf.d
make install

Однако директива zend_extension в php.ini полностью игнорируется. Если я использую несуществующий путь, я все еще даже не получаю сообщение об ошибке. При использовании скомпилированной библиотеки php все работает нормально.

В php.ini я тоже установил

error_reporting = E_ALL & ~E_NOTICE
display_startup_errors = On
log_errors = On
error_log = /var/log/php_errors.log

error_log = /var/log/php_errors.log записывается только при возникновении ошибки в php-файле.

В apache.conf я установил

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel debug

Я также попытался скомпилировать с --disable-maintainer-zts --disable-safe-mode который был упомянут на другом сайте. Я выбираю php-5.2.6, потому что это версия (работающей) предварительно скомпилированной php, но я также попробовал php-версию 5.2.16.

1 ответ

Решение

Решение:

Согласно руководству пользователя Zend Optimizer

Zend Optimizer не будет работать, если включены следующие настройки PHP:

  • Режим отладки - Проверьте, что ваш PHP был скомпилирован в режиме без отладки. Это можно проверить, посмотрев верхнюю часть вывода функции phpinfo() и проверив строку "Debug Build" (ZEND_DEBUG в более старых версиях PHP). "нет".
  • Потокобезопасность - убедитесь, что ваш PHP был скомпилирован в режиме ZTS для Windows и не в ZTS для UNIX. Это можно проверить, посмотрев на верхнюю часть функции phpinfo() и проверив строку "Thread Safety" - она ​​должна сказать "отключено" для Unix и "включено" для Windows.
  • Включить управление версиями - убедитесь, что ваш PHP скомпилирован без параметра "Включить управление версиями". Это можно проверить, посмотрев верхнюю часть функции phpinfo() и проверив, существует ли строка с именем "--enable-versioning" в разделе "Configure Command" - если она существует, PHP должен быть скомпилирован без этой опции,

Параметры настройки --disable-zts и --disable-keeper-zts (которые должны включить режим безопасности потоков) НЕ существуют в PHP 5.2.x

Вы можете управлять режимом Thread-Safety, выполнив следующие действия:

Я обнаружил это потому, что при установке пакета apache2-dev в моей системе (Ubuntu) автоматически устанавливается apache2-thread-dev, чей apxs2 сообщает системе сборки PHP о необходимости сборки с безопасностью потоков. Поэтому решение состояло в том, чтобы напрямую установить пакет apache2-prefork-dev. (Кредиты для этого идут в Амр-Мостафу)

Описанное выше поведение также применимо к debian. Таким образом, удаление apache-tread-dev и установка apache2-prefork-dev сделали свое дело!

Другие вопросы по тегам