Я получаю чрезвычайно странный дамп ядра, который ссылается на «Отсутствие Zend», хотя zend установлен и работает правильно.
Это начало проявляться сегодня после того, как я сделал apt-get upgrade
, и по какой-то причине он больше не позволяет мне переходить на более раннюю версию, но это было незначительное изменение, поэтому я не знаю, что изменилось.
Вот дамп ядра:
Core was generated by `php-fpm: pool www '.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 _zend_mm_free_int (heap=0x7fcb09b027d0, p=0x7fcb09b027e0) at /build/php5-oxmf3S/php5-5.6.4+dfsg/Zend/zend_alloc.c:2104
2104 /build/php5-oxmf3S/php5-5.6.4+dfsg/Zend/zend_alloc.c: No such file or directory.
(gdb) bt
#0 _zend_mm_free_int (heap=0x7fcb09b027d0, p=0x7fcb09b027e0) at /build/php5-oxmf3S/php5-5.6.4+dfsg/Zend/zend_alloc.c:2104
#1 0x00000000006ac920 in sapi_deactivate () at /build/php5-oxmf3S/php5-5.6.4+dfsg/main/SAPI.c:525
#2 0x00000000006a3c35 in php_request_shutdown (dummy=<optimized out>) at /build/php5-oxmf3S/php5-5.6.4+dfsg/main/main.c:1893
#3 0x000000000046565d in main (argc=162534288, argv=0x7fcb09b01c30) at /build/php5-oxmf3S/php5-5.6.4+dfsg/sapi/fpm/fpm/fpm_main.c:2071
(gdb)
Та же проблема для меня при обновлении до PHP 5.5.9-1ubuntu4.11, моя трассировка стека выглядит так же, мне удалось решить ее, изменив конфигурацию nginx. Этот работал вечно и перестал работать после обновления:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Добавление fastcgi_param
Директива помогла мне решить проблему, поэтому я просто добавил ее на каждый сайт на своем сервере:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # This one
include fastcgi_params;
}
Но эта проблема продолжает оставаться немного странной.