Erreurs 500 après upgrade de PHP

L'URL rewrite fait des siennes

L'auteur de ce sujet a trouvé une solution à son problème.
Staff
Auteur du sujet

Hello tout le monde !

J'ai tenté hier de migrer mon serveur perso (sous Debian Jessie) vers PHP 7.0.

Grand mal m'en a pris, j'ai cumulé les problèmes après ça…

Donc, après avoir ré-installé PHP5 (sans lequel Owncloud et phpMyAdmin ne tournaient plus) et re-configuré Apache (2.4), je me retrouve avec des erreurs 500 à chaque fois que la ré-écriture d'URL est utilisée.

En gros, quand j'accède directement à un fichier PHP (ou HTML) par son chemin propre, je n'ai aucun problème (même si à un moment le PHP n'était pas interprété et donc retourné en brut… :euh: ). Mais comme une bonne partie des sites que j'héberge utilisent du rewrite, j'ai des erreurs 500 non personnalisées (donc PHP n'a pas le temps d'être exécuté en fait).

Après lecture des logs Apache, je suppose que la ré-écriture fonctionne mal, créant des boucle infinies.

Pourtant je n'ai pas vraiment touché à la config du serveur et les modules Apache sont les mêmes qu'avant…

Vous avez des idées ?

Staff
Auteur du sujet

Les derniers logs donnent ça (pour la racine du site, soit https://www.comin2.com)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[Sat Apr 09 13:20:54.749558 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] strip per-dir prefix: /home/comin2/www/ -> 
[Sat Apr 09 13:20:54.749658 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] applying pattern '^(.*)$' to uri ''
[Sat Apr 09 13:20:54.749691 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] RewriteCond: input='www.comin2.com' pattern='!^www\\.comin2\\.com$' [NC] => not-matched
[Sat Apr 09 13:20:54.749713 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] strip per-dir prefix: /home/comin2/www/ -> 
[Sat Apr 09 13:20:54.749731 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] applying pattern '^(.+)/$' to uri ''
[Sat Apr 09 13:20:54.749751 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] strip per-dir prefix: /home/comin2/www/ -> 
[Sat Apr 09 13:20:54.749770 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] applying pattern '^(.*)$' to uri ''
[Sat Apr 09 13:20:54.749806 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/' pattern='!-f' => matched
[Sat Apr 09 13:20:54.749834 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/' pattern='!-d' => not-matched
[Sat Apr 09 13:20:54.749854 2016] [rewrite:trace1] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b900a0/initial] [perdir /home/comin2/www/] pass through /home/comin2/www/
[Sat Apr 09 13:20:54.749961 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] strip per-dir prefix: /home/comin2/www/index.html -> index.html
[Sat Apr 09 13:20:54.749986 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] applying pattern '^(.*)$' to uri 'index.html'
[Sat Apr 09 13:20:54.750016 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/index.html' pattern='!-f' => matched
[Sat Apr 09 13:20:54.750044 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/index.html' pattern='!-d' => matched
[Sat Apr 09 13:20:54.750065 2016] [rewrite:trace2] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] rewrite 'index.html' -> 'index.php/index.html'
[Sat Apr 09 13:20:54.750086 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] add per-dir prefix: index.php/index.html -> /home/comin2/www/index.php/index.html
[Sat Apr 09 13:20:54.750131 2016] [rewrite:trace2] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] trying to replace prefix /home/comin2/www/ with /
[Sat Apr 09 13:20:54.750153 2016] [rewrite:trace5] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] strip matching prefix: /home/comin2/www/index.php/index.html -> index.php/index.html
[Sat Apr 09 13:20:54.750173 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] add subst prefix: index.php/index.html -> /index.php/index.html
[Sat Apr 09 13:20:54.750192 2016] [rewrite:trace1] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] internal redirect with /index.php/index.html [INTERNAL REDIRECT]
[Sat Apr 09 13:20:54.750275 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] strip per-dir prefix: /home/comin2/www/index.cgi -> index.cgi
[Sat Apr 09 13:20:54.750299 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] applying pattern '^(.*)$' to uri 'index.cgi'
[Sat Apr 09 13:20:54.750329 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/index.cgi' pattern='!-f' => matched
[Sat Apr 09 13:20:54.750356 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/index.cgi' pattern='!-d' => matched
[Sat Apr 09 13:20:54.750376 2016] [rewrite:trace2] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] rewrite 'index.cgi' -> 'index.php/index.cgi'
[Sat Apr 09 13:20:54.750398 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] add per-dir prefix: index.php/index.cgi -> /home/comin2/www/index.php/index.cgi
[Sat Apr 09 13:20:54.750419 2016] [rewrite:trace2] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] trying to replace prefix /home/comin2/www/ with /
[Sat Apr 09 13:20:54.750439 2016] [rewrite:trace5] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] strip matching prefix: /home/comin2/www/index.php/index.cgi -> index.php/index.cgi
[Sat Apr 09 13:20:54.750460 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] add subst prefix: index.php/index.cgi -> /index.php/index.cgi
[Sat Apr 09 13:20:54.750478 2016] [rewrite:trace1] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] internal redirect with /index.php/index.cgi [INTERNAL REDIRECT]
[Sat Apr 09 13:20:54.750551 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] strip per-dir prefix: /home/comin2/www/index.pl -> index.pl
[Sat Apr 09 13:20:54.750594 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] applying pattern '^(.*)$' to uri 'index.pl'
[Sat Apr 09 13:20:54.750626 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/index.pl' pattern='!-f' => matched
[Sat Apr 09 13:20:54.750653 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/index.pl' pattern='!-d' => matched
[Sat Apr 09 13:20:54.750674 2016] [rewrite:trace2] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] rewrite 'index.pl' -> 'index.php/index.pl'
[Sat Apr 09 13:20:54.750693 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] add per-dir prefix: index.php/index.pl -> /home/comin2/www/index.php/index.pl
[Sat Apr 09 13:20:54.750716 2016] [rewrite:trace2] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] trying to replace prefix /home/comin2/www/ with /
[Sat Apr 09 13:20:54.750736 2016] [rewrite:trace5] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] strip matching prefix: /home/comin2/www/index.php/index.pl -> index.php/index.pl
[Sat Apr 09 13:20:54.750756 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] add subst prefix: index.php/index.pl -> /index.php/index.pl
[Sat Apr 09 13:20:54.750775 2016] [rewrite:trace1] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b920a0/subreq] [perdir /home/comin2/www/] internal redirect with /index.php/index.pl [INTERNAL REDIRECT]
[Sat Apr 09 13:20:54.750925 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] strip per-dir prefix: /home/comin2/www/index.php -> index.php
[Sat Apr 09 13:20:54.750953 2016] [rewrite:trace3] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] applying pattern '^(.*)$' to uri 'index.php'
[Sat Apr 09 13:20:54.750987 2016] [rewrite:trace4] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] RewriteCond: input='/home/comin2/www/index.php' pattern='!-f' => not-matched
[Sat Apr 09 13:20:54.751008 2016] [rewrite:trace1] [pid 18739] mod_rewrite.c(475): [client 176.140.18.61:55741] 176.140.18.61 - - [www.comin2.com/sid#7f0b8693a480][rid#7f0b80b840a0/subreq] [perdir /home/comin2/www/] pass through /home/comin2/www/index.php

Sachant que le .htaccess à la racine du site contient grosso-modo ça (plus 2-3 broutilles non liées au rewrite) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /

        RewriteCond %{HTTP_HOST} !^www\.comin2\.com$ [NC]
        RewriteRule ^(.*)$ http://www.comin2.com/$1 [R=301,L]

        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.+)/$ $1 [R=301,L]

        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

Édité par viki53

Salut,
tu as pensé à vérifier que le module rewrite_module d'Apache est bien activé ? Quand on regarde les logs on dirait que oui, mais dans le doute, un check ne fait pas de mal.

Sinon j'ai pas vraiment d'idée qui me vienne à l'esprit, désolé.

+0 -0
Staff
Auteur du sujet

Il est bien activé, il est dans les mods-enabled et bien listé quand je fais un dump des modules (via apachectl ou via un phpinfo).

Visiblement il est activé et exécuté, mais quelque chose doit mal se passer. Et le problème apparaît aussi bien sur un site avec CodeIgniter qu'avec un simple blog sous WordPress…

Tu as tenté de passer à php 7 et tu es revenu à php 5.6… Comment as-tu fais ses opérations ? Tu parle de re-configurer apache. Pourquoi ? Tu as aussi touché à apache au moment de ton passage à php 7 ?

+0 -0
Staff
Auteur du sujet

Je parle de configurer Apache pour utiliser PHP7 et ré-activer quelques modules, rien de bien sorcier ;)

J'ai les deux versions d'activées maintenant, mais je pense pas que ce soit lié à PHP au final vu qu'en accédant directement à un fichier PHP ça fonctionne. C'est l'URL rewriting qui fait des siennes…

Staff
Auteur du sujet

Nope, je viens de désinstaller tous les paquets liés à PHP5, aucun changement.

J'ai mis en ligne un petit phpinfo, si ça peut aider…

À savoir que passer par la ligne de commande n'a pas l'air plus efficace, en tout cas celle d'OwnCloud.

Édité par viki53

Malheureusement je n'ai pas d'idée.

Moi dans ce genre de cas, ce que je fais c'est une sauvegarde des bdd et des sources et je formate le serveur ^^ C'est efficace.

C'est pour cette raison que je suis juste un fan inconditionnel de Docker, j'install ce que j'ai envie dans des container et si il y a quelque chose qui foire j'ai qu'a relancer ce qui marchais bien avant. Je suis sur d'avoir rien cassé comme sa ^^

+0 -0
Staff
Auteur du sujet

Hello !

Hier soir j'ai eu une intuition et j'ai regardé d'autres logs, dont ceux de CodeIgniter, utilisé sur un de mes sites.

CodeIgniter et PDO

Il se trouve que certaines choses étaient bien initialisées, mais que ça s'arrêtait au driver de BDD. Et là, révélation : ce vieux CodeIgniter avait jamais été configuré pour passer à PDO ! J'ai honte… :euh:

Les plugins WordPress

Une fois le problème réglé pour ce site, j'ai donc tenté de corriger mon blog sous WordPress pour faire la même chose. Sauf que WP ne supporte pas PDO, mais sait passer à mysqli tout seul. Donc le problème n'était pas la DB. Après avoir activé le mode débug (dans le wp-config.php), j'ai donc pu voir qu'un plugin (celui pour facebook, en l'occurrence) générait une Fatal Error. Après un tour en BDD pour désactiver le plugin manuellement (table wp_options, option_name = active_plugins), j'ai enfin pu remettre tout ça sur pieds !

Les apps OwnCloud

Puis je me suis occupé d'OwnCloud, avec un problème similaire (il fallait juste regarder dans des logs spécifiques, rangés dans le dossier data d'OC) : une app (OwnNote) déclenchait une erreur fatale.

Et voilà comment après une semaine j'ai réussi à faire repartir trois sites :D

Édité par viki53

Eh bien, en voilà une histoire ! Bien content que tu aies pu remettre tout ça sur pieds. :)

Une petite remarque : vu que je suis curieux, j'ai fait un tour sur www.comin2.com, juste pour voir, et il semble que ton portfolio ne supporte pas l'affichage pour mobile (et je parle bien de mobile, parce que sur tablette ça se passe bien). Peut-être que t'étais déjà au courant, mais dans le doute… Que ma curiosité serve à quelque chose. :D

+0 -0

Protip: quand tu as du wikimedia ou du wordpress, ne met pas à jour PHP :') .

De manière générale ça tourne à la catastrophe. Sauf si tu maintiens tes projets au moins 4h par semaine (pour faire leur maj etc).

tadam: http://wiki.nekland.fr (et encore, il ne s'agit pas de PHP7..)

+0 -0

C'est pas un troll, c'est totalement sérieux. Ton wordpress est probablement récent pour que tu t'en sortes. Moi j'ai passé 3 heures pour ne pas réussir à faire une seule mise à jour de mon mediawiki (sur 6 ou 7).

Mais si les plugins posent problèmes, c'est souvent le core le problème (la faute à la volonté de conserver une compatibilité php 5.2).

Pour mediawiki les problèmes sont similaires, il n'y a pas de migration des bases prévue… Du coup forcément c'est la merde absolue (bien plus qu'avec wordpress en fait).

C'est un problème récurrents des projets codés à l'arrache comme ceux là.

C'est pas le sujet par contre.

Édité par Nek

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte