Php не удается загрузить xcache.so после перекомпиляции
Я перекомпилировал PHP 5.4.39 на своем raspbian, чтобы включить поддержку pthreads.
Все работает хорошо, даже pthreads, но каждый раз, когда я запускаю php script из командной строки (и я предполагаю, что это то же самое, если apache использует php), он говорит, что не удается загрузить xcache.so:
Не удалось загрузить /usr/lib/php 5/20100525+lfs/xcache.so:/usr/lib/php5/20100525+lfs/xcache.so: undefined symbol: compiler_globals
Я перекомпилировал php, используя эту информацию: https://www.digitalocean.com/community/info/enable-zts-support-on-ubuntu-14-04
Хотя php работает нормально, я хотел бы знать, что это означает, и я хотел бы решить его, если это возможно.
Ответы
Ответ 1
У вас, скорее всего, есть расширения PHP, которые были созданы против старой сборки самого PHP. Правильное решение - удалить неправильно связанные расширения PHP и восстановить их.
Я предлагаю вам начать с расширения XCache (пакет php5-xcache
на Ubuntu). Удалите его и перестройте его, выполнив действия, указанные в упомянутом руководстве (просто замените php5
на php5-xcache
).
Скорее всего, некоторые другие расширения также будут иметь проблемы. Удалите и перестройте их.
Если вы только последовали за учебником с помощью php5
, можно с уверенностью сказать, что вам нужно будет удалить и перестроить все расширения. Все пакеты, начинающиеся с php5-
.
PS: Не все расширения PHP поддерживают безопасность потоков. Если вы не можете создать какое-то расширение, но не нуждаетесь в нем, просто удалите его.
PPS: XCache - это кеш операций. Убедитесь, что вы не включили несколько кеш-кодов операций одновременно. Например, не включайте вместе XCache и OPcache (или APC), но выберите один из них.
Ответ 2
В php.ini
найдите zend_extension
, выполните sudo updatedb
в другом терминале, а затем найдите xcache.so
и укажите путь, который вы должны положить в php.ini
. Если это не решит проблему, вы можете использовать несовместимый модуль xcache. т.е. с помощью поточного безопасного xcache с безопасным php-потоком или наоборот.