On july 19th 2012, the PHP group has released PHP 5.4.5 and PHP 5.3.15, that bring over 30 bug fixes, including a fix for a security related overflow issue in the stream implementation.
The corresponding packages are now available on Dotdeb for Debian 6.0 “Squeeze” on both amd64 and i386 architectures (see the installation instructions). Please also note that the php5-xhprof package is now available for PHP 5.4.
As usual, please read the ChangeLog before upgrading and be sure to use to the latest packages before reporting any issue.
64 replies on “PHP 5.4.5 and PHP 5.3.15”
Thanks Guillaume! What do you think? Is PHP 5.4 ready for productive use?
@Tim : It is, but be sure that all your applications are fully compatible before upgrading. Or test it on a staging environment.
Thanks,
worked very well.
Still no information about suhosin? What to you think about running PHP without suhosin? Is it very insecure?
Running without Suhosin is not that insecure. And Suhosin’s github repository is so inactive that we’ll have to do without it for now.
Thank you! 🙂
after upgrade, restarting php5-fpm daemon gives the following error :
/etc/init.d/php5-fpm: line 56: 9565 Segmentation fault start-stop-daemon –start –quiet –pidfile $PIDFILE –exec $DAEMON — $DAEMON_ARGS 2> /dev/null
any ideas? something we’re missing perhaps?
thanks,
dpdt1
Same here with the segmentation fault after updating the php5 packages from 5.3.14 to 5.3.15. And it’s not only on restart, using php5-fpm starts got this error too.
I’ll need some more information to help you : which distribution? which architecture? Are all your PHP-related packages coming from Dotdeb? Sources.list? Which PHP extensions did you install?
A trace from the process launch would be great.
PHP 5.4.5 works great on Debian but why is
no php5-suhosin available at moment?
thx for answer
@Basti : because Suhosin is incomplete on PHP 5.4 and its development has been kinda “stalled”.
thx for quick information… good work
debian stable, amd64, with official, security, volatile, backports & dotdeb repos. all php5 packages come from dotdeb as far as i can see. dmesg : php5-fpm[6992]: segfault at 7f676969f3a0 ip 00007f677131d2b3 sp 00007fff4ba00bc0 error 4 in ld-2.11.3.so[7f677130f000+1e000]
@dpt1 : same config here, no problem. I’ll take a further look at it. Any special tweaking on your libc6 installation? What is the result of
?
thanks for the fast reply, posted results here : https://pad.riseup.net/p/zGneub7B2uU0
@dpt1 : ok, could you please deactivate the sasl, ming, suhosin and apc extensions and see it the segfaults still occurs? If it doesn’t please reactivate them one by one until you find the guilty one.
thx. i tried to deactivate one by one, and it seems php5-sasl was causing it. i only checked with ming before that and had no effect, so not sure about the other extensions. will try later when i have some more time. thanks again 🙂
Hi,
same config here as dpdt1 except the backports repos.
That’s my output of the installed libc6 and php5 packages:
http://pastebin.com/ivZLHd6U
After disabling php5-xcache the error is gone. But now, after enabling the php5-xcache again the error is still gone.
same problems here.
sometimes restart/start works, sometimes not.
not always the second or the third try…
sometimes the 10s or 30s earlier or later.
so its hard to say if an extensions produces the error and when which..
on debian squeeze 32bit and 64bit.
@cpl : same answer (and questions) as above – do no hesitate to forward the result of the dpkg commands.
libgv-php5 is not available for 5.4 (depends on phpapi-20090626).
any chance of getting this package from dotdeb?
@voro : no plan for this sorry. But you can build your own libgv-php5 packages by trying “apt-get source -b libg-php5” after installing php5-dev version 5.4. It may be a difficult job.
sorry …
https://pad.riseup.net/p/kAMMnrYQ9oqU
as mentioned, tested with deactivating all one by one and reactivating.
no reliable result as of failure at second or 10s or 30s try or …
@cpl : first, avoid suhosin if you can. Please note that having both pac and debug installed and activated at the same time is a bad idea.
@Guillaume : thanks for the quick reply. I think I’ll call grapviz directly.
@Guillaume Plessis
1)
suhosin is a must have for our customers.
at the moment no way around this.
2)
do you mean apc an xdebug?
it’s not running on all server at the same time. one some theres only apc. for example.
3)
but all this configuration was running well on all our system for a long time until the update yesterday. on the other hand there is no explanation why restart with apc enabled produces an error at the second try. and the other time there are 100 restarts without a problem. tested all extensions this way. (example of 50 restarts with only mysql enabled: https://pad.riseup.net/p/XxydwduHy2NY )
mae a new test:
500 restarts in a row with a sleep after each.
error rate increases by the number of activated extensions (up to 9 of 10)
@cpl : yep, I meant “apc” and “xdebug”. Damn autocorrect!
If you have the restart / segfault problem, could you please specify if you use a Unix or TCP socket to connect FPM to your Web server?
we’re using unix sockets
Don’t know if it’s useful but after the latest upgrade of php (Linode standard Debian with PHP installed/updated via dotdeb) I got the following two lines after restart:
php5-fpm[18109]: segfault at b5b02064 ip b77a255f sp bfc91210 error 4 in ld-2.11.3.so[b7794000+1b000]
php5-fpm[18110]: segfault at b6a2f22c ip b775155f sp bfff7510 error 4 in ld-2.11.3.so[b7743000+1b000]
anywway php seems stable.
bye
@Guillaume Plessis
I’m using unix sockets too.
Is there a reason why php5-ssh2 is missing for 5.3.15 i386 ?
@Laph : it’s back. Thanks for the notice.
@Guillaume Plessis:
Just tried TCP. Same issue there …
Is it possible to get a Ubuntu 12.04 repo?
I hate my company… all servers ubuntu and no current php5 deb -.-
Guillaume Plessis, is possible to you host php5-mysql too?
@Lincoln Marques : php5-mysql is already present in the Dotdeb repository
my server got error too
on dmesg
[ 819.731267] php5-fpm[7587]: segfault at b69881d4 ip b770355f sp bfb98440 error 4 in ld-2.11.3.so[b76f5000+1b000]
use tcp socket
packages.dotdeb.org
Segfault as well… had to install 5.3.14 manually from http://archives.dotdeb.org and hold php5-common and php5-fpm to make sure nothing get updating until this issue is fixed.
Same here… I got segmentation fault too. Anyway, I have 2 suhosin installed. 0.9.10 (Patch) and 0.9.33 http://i.imgur.com/LHDQz.jpg
Debian 6 32 bit. Fresh and clean install PHP 5.3.15. PHP-FPM. Suhosin installed with apt-get install php5-suhosin.
The init script doesn’t exit.
I upgraded php5-fpm to 5.3.15 on debian squeeze 32 last monday without pb.
This morning, my desktop stop its boot during rc2 init. After a while looking for the pb, it’s /etc/init.d/php5-fpm that start fpm but never end. I have my usual ps tree,
\_ /bin/sh /etc/init.d/php5-fpm start
\_ /usr/sbin/php5-fpm –fpm-config /etc/php5/fpm/php-fpm.conf
\_ php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
\_ php-fpm: pool drupal
\_ php-fpm: pool www
[…]
fpm seems to run fine (on all the sockets I configure), but init script doesn’t exit and lock the boot :-/
When launching /etc/init.d/php5-fpm start manually, same thing, ctrl+c neither exits (kill neither do, only kill -9 can stop it).
After each kill -9, I grep ps output to check that no more php process is running, and remove pidfile and socket. I tried to launch each command of /etc/init.d/php5-fpm one by one by hand, and “start-stop-daemon –start –quiet –pidfile $PIDFILE –exec $DAEMON — $DAEMON_ARGS” never exit. I tried VERBOSE=yes in /etc/default/rcS and then “/etc/init.d/php5-fpm start” ends normally !! I put back VERBOSE=no in /etc/default/rcS and the script still ends normally !!!!
I’m sure that /etc/ is exactly the same as each day of last week (I check against /etc snapshots I have), so I really don’t understand what’s happened.
Hi all. I keep on investigating this issue by analyzing backtraces (https://bugs.php.net/bugs-generating-backtrace.php). Here it is :
, pid=0x3 , test_conf=0,Core was generated by `/usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/php-fpm.conf'.
Program terminated with signal 11, Segmentation fault.
#0 0x000060d8ee9b82b3 in ?? () from /lib64/ld-linux-x86-64.so.2
(gdb) bt
#0 0x000060d8ee9b82b3 in ?? () from /lib64/ld-linux-x86-64.so.2
#1 0x000060d8ebcdd612 in ?? () from /lib/libc.so.6
#2 0x000060d8ebcdd665 in exit () from /lib/libc.so.6
#3 0x0000000000760c0b in fpm_signals_sighandler_exit_ok (pid=-378444608)
at /usr/src/php5/source/php5-5.3.15/sapi/fpm/fpm/fpm_signals.c:254
#4
#5 0x000060d8ee9c0007 in ?? () from /lib64/ld-linux-x86-64.so.2
#6 0x000060d8ee9bf3f3 in ?? () from /lib64/ld-linux-x86-64.so.2
#7 0x000060d8ee9bce9a in ?? () from /lib64/ld-linux-x86-64.so.2
#8 0x000060d8ee9bd59e in ?? () from /lib64/ld-linux-x86-64.so.2
#9 0x000060d8ee9b7906 in ?? () from /lib64/ld-linux-x86-64.so.2
#10 0x000060d8ece992ec in ?? () from /lib/libdl.so.2
#11 0x000060d8ece9900f in dlclose () from /lib/libdl.so.2
#12 0x00000000006cdaa4 in module_destructor (module=0x3ec9c50) at /usr/src/php5/source/php5-5.3.15/Zend/zend_API.c:2141
#13 0x00000000006d4342 in zend_hash_apply_deleter (ht=0xeb7920, p=0x3ec9bf0) at /usr/src/php5/source/php5-5.3.15/Zend/zend_hash.c:814
#14 0x00000000006d45c8 in zend_hash_graceful_reverse_destroy (ht=0xeb7920) at /usr/src/php5/source/php5-5.3.15/Zend/zend_hash.c:850
#15 0x00000000006c86a5 in zend_shutdown () at /usr/src/php5/source/php5-5.3.15/Zend/zend.c:831
#16 0x0000000000671f5d in php_module_shutdown () at /usr/src/php5/source/php5-5.3.15/main/main.c:2201
#17 0x000000000075dee9 in fpm_php_cleanup (which=-434307072, arg=0x313018) at /usr/src/php5/source/php5-5.3.15/sapi/fpm/fpm/fpm_php.c:199
#18 0x000000000075547e in fpm_cleanups_run (type=2) at /usr/src/php5/source/php5-5.3.15/sapi/fpm/fpm/fpm_cleanup.c:45
#19 0x0000000000763de2 in fpm_unix_init_main () at /usr/src/php5/source/php5-5.3.15/sapi/fpm/fpm/fpm_unix.c:312
#20 0x000000000075482f in fpm_init (argc=-434307072, argv=0x313018, config=0x60d8eebb7a88 "",
prefix=0xffffffffffffffff
run_as_root=7717091) at /usr/src/php5/source/php5-5.3.15/sapi/fpm/fpm/fpm.c:59
#21 0x000000000075c0e3 in main (argc=3, argv=0x7042d6fea938) at /usr/src/php5/source/php5-5.3.15/sapi/fpm/fpm/fpm_main.c:1805
The same problem seems to occur on other systems, such as FreeBSD.
Hi Guillaume!
I decided to go for 5.4 package while 5.3 crashes on my debian stable amd64 development machine … but apparently php5-ffmpeg only works with 5.3.15.
So my question is: will it be supported on 5.4 ?
Thanks in advance.
@Aleksandr : I have no idea. You should ask the ffmpeg-php developers.
@Daniel Caillibaud : Thanks for this report. I’m succeeding in reproducing this freeze in a (Xen-based) virtualized environment. I’ll take a look at it. I wonder if it’s related to the above segfault issue. Something seems to be messed up with the PHP-FPM launch.
@Josef : a colleague of mine is working on an Ubuntu port. See http://packages.tooptee.org/
If you encounter segfaults, could you please try to set and to export the ZEND_DONT_UNLOAD_MODULES environment variable before launching php5-fpm :
export ZEND_DONT_UNLOAD_MODULES=1
Tell me if it works. Thanks in advance.
Hi,
yes exporting this environment variable at my system did the trick and the segfault is gone.
Thanks for this hint!!!
@Guillaume
Workaround seems to work on our servers,too.
Maybe you could release a new version e.g. 5.3.15-1~dotdeb.1 with a customized init.d script to get things work by update …
I have this problems yet in dmesg
php5-fpm[13755]: segfault at 1d7e8 ip 0001d7e8 sp bfd3acfc error 4 in php5-fpm[8048000+80a000]
🙁
@nalmaster_vc : did you read the above comments and tried to export the ZEND_DONT_UNLOAD_MODULES environment variable?
@cpl : this is a temporary fix, I’m still looking for a permanent solution.
@Guillaume Plessis yep I´m export ZEND_DONT_UNLOAD_MODULES=1 but php5-fpm[13755]: segfault at 1d7e8 ip 0001d7e8 sp bfd3acfc error 4 in php5-fpm[8048000+80a000] in dmesg , in debian squeeze
Note: php5-fpm work, but problems when restart
The problem seems to be the way FPM handles the dlclose() system call when unloading shared extensions.
Why php5-xcache doesn’t contain admin pages?
See official debian package :
http://packages.debian.org/squeeze/amd64/php5-xcache/filelist
Just some short comments (debian squeeze, 32 bit):
– the restart issue exists. The supposed export fixes this issue
Some additional things with the current release and the SEGAULT issues:
– having xhprof installed using php5-xhprof leads to several segfaults without a debugtrace. Use the PECL Version for now
– using slowlog with stacktrace, you can end up with segfaults because the stacktrace is to long or similar. In that case, your script dies after the slowlog timeout
General FastCGI hints ( not an dotdeb issue)
– for all being newer to FPM, be aware you set idle-timeout in the FastCgiExtern derictive to something higher then you php max-exectution time / the FPM process timeout. Otherwise you get a apache/nginx/webserver timeout (500 Internal server error) while the process continues to run
And, last but not lest, thank you for your outstanding work here!!
well, that export did not really fix my issue, but i think https://bugs.php.net/bug.php?id=62216 is very related here.
i modified his fix:
PIDFILE=/var/run/php5-fpm.pid
DAEMON_ARGS=”–fpm-config /etc/php5/fpm/php-fpm.conf –pid $PIDFILE”
(be aware, you change the order of PIDFILE and DEAMON_ARGS)
I also changed the TIMEOUT to 5 seconds, which is used below to wait between sigterms QUIT and TERM
Still, that way, you can get stop/start working, but still restart wont work:
An another FPM instance seems to already listen on /var/run/php-fpm/pools/www/www.sock
More or less, i think this is all dedicated to
start-stop-daemon –stop –quiet –oknodo –retry=0/30/TERM/5/KILL/5 –exec $DAEMON
since the init.d script trys to let the forks complete properly before finally killing it. But killing takes longer and e.g. the socket does not get deleted in time, therefore the start script fails.
so we first send TERM, check instanly, then we wait for 30 seconds, before we send another the TERM signal (soft/good kill), wait another 5s and kill the process hard, then wait for 5 seconds once again.
Still, starting and stoping fail randomly and i dont know why.
Some help would be awesome here
Sorry from tripple-posting, but i just had another suggestion:
Could it be, that the script is trying to kill the forks, which then are instantly restarted and therefor the fork-kill script gets into a loop? so basically, it kills fork 1, goes on to 2, trys to kill that, fork1 is restarted, it goes to 1…and so forth. That would explain why the script goes on forever, because the timeouts are never hit, as there is a reaction on the kill.
Does that sound any clueless? 🙂
Sorry, me again, but this time with a solution which i thought i should share. http://eugenmayer.github.com/php5-fpm-tools
I basically adjusted the original scriipt, which does not use the start-stop-daemon at all, but at least works reliable, which is important for us.
@EM: xhprof from pecl is an older version (the real 0.9.2) than on Github.
xhprof on Github is proxying zend_compile_string to include eval() in profiling data.
To work around this problem, you have to recompile the xhprof extension. This is working for me: http://pastie.org/4400114
Bug report on bugs.php.net: https://bugs.php.net/bug.php?id=62062
Hi,
The restart is broken for me too! The export ZEND_DONT_UNLOAD_MODULES=1 fix works! Where should I put it? In .bashrc? Or it will be fixed with the next release? Thanks!
We had the same problem with php version 5.3.16 and 5.4.6 but as soon as we got the imap.ini in /etc/php5/conf.d/ removed, php5-fpm was restarting like a charm again..
Could anyone else verify this?
We are not using IMAP at all, so i dont think this is related. I have better results with 5.3.16 currently, it stuckes rare, but it still does from time to time
Hi
so I have been having the same problem as well.
Sep 7 11:51:56 srv3 kernel: [603259.906084] php5-fpm[2166]: segfault at 7fff26262001 ip 000000000076e02c sp 00007fff262591b0 error 6 in php5-fpm[400000+762000]
of all the extension that was mentioned here I am only using APC.
this is by the way on a debian 6.0.5 (squeeze) and here is the result for dpkg
ii libc6 2.11.3-3 Embedded GNU C Library: Shared libraries
ii libc6-dev 2.11.3-3 Embedded GNU C Library: Development Libraries and Header Files
ii libc6-i386 2.11.3-3 Embedded GNU C Library: 32-bit shared libraries for AMD64
ii php5-apc 5.4.6-1~dotdeb.0 apc module for php5
ii php5-cli 5.4.6-1~dotdeb.0 command-line interpreter for the php5 scripting language
ii php5-common 5.4.6-1~dotdeb.0 Common files for packages built from the php5 source
ii php5-curl 5.4.6-1~dotdeb.0 CURL module for php5
ii php5-dev 5.4.6-1~dotdeb.0 Files for PHP5 module development
ii php5-fpm 5.4.6-1~dotdeb.0 server-side, HTML-embedded scripting language (FPM-CGI binary)
ii php5-gd 5.4.6-1~dotdeb.0 GD module for php5
ii php5-mysql 5.4.6-1~dotdeb.0 MySQL module for php5
ii php5-pgsql 5.4.6-1~dotdeb.0 PostgreSQL module for php5
ii php5-redis 5.4.6-1~dotdeb.0 redis module for php5
I am also using memcache and igbinary from pecl