Erreur de segmentation d’Apache 2 lorsque zend php 53 installé avec curl

J’ai passé beaucoup de temps à comprendre pourquoi apache2 se bloque. Mon environnement est:

  • Tests Debian
  • Apache 2 (réécriture, ssl, etc.)
  • PHP 5.3 Zend installé depuis le repository zend

Rien d’inhabituel, mais Dmesg dit:

apache2[xxxx]: segfault at 18 ip xxxx sp xxxx error 4 in libphp5.so[xxxxx] 

Il n’y a rien d’autre dans les journaux que j’ai trouvé et il est très difficile de trouver le problème.

J’ai commencé à découvrir le problème des modules php, car beaucoup de défauts de segmentation concernent le module php. Après quelques tests, j’ai constaté que la désactivation du module curl corrige le problème. Mais dans mon cas, le curl est nécessaire, alors je dois continuer l’enquête.

La seule chose importante à savoir que php-cli avec curl activé fonctionne correctement et php -m aussi.

Donc, c’est définitivement le problème d’Apache. Heure plus tard, j’ai découvert que, avec SSL désactivé et activé, Apache fonctionne.

Il y a un conflit dans deux modules (mod_ssl, php_curl). Et ldd mod_ssl.so montre que cette bibliothèque dépend de libcrypto.so.1.0.0 . En fait, aptitude me montre que la version de openssl est 1.0.0-e. Mais phpinfo () me montre qu’il a été construit avec --with-openssl=/usr/local/openssl-0.9.8o . Il y a conflit. Il y a deux modules qui dépendent de openssl mais construits avec des versions différentes: 0.9.8o vs 1.0.0-e!

J’ai dû rétrograder ma version d’apache2 et openssl vers la version appropriée et maintenant cela fonctionne: ssl et curl les deux.

Comme il était difficile de comprendre ce problème, j’ai décidé de poster cette astuce ici. Et j’espère que cette petite note aidera quelqu’un à gagner du temps.