OVH Community, votre nouvel espace communautaire.

Erreur 500 lors d'une erreur fatale de PHP sur les mutu2014


nitrix-ud
19/11/2015, 14h10
Citation Envoyé par nitrix-ud
@L.YA ne pouvez-vous pas modifier le fonctionnement pour forcer la création d'un autre processus quand on a environment sur development ?


ou alors pourrait-on avoir des "versions php" supplémentaire.... "virtuel" pour le développement...
du genre : app.engine.version=5.6d

qui ouvrirait un nouveau processus (en php 5.6) car cette version de php ne serait pas utilisé par les autres multi-domaines...
cela réglerait le pb
@L.YA, toujours pas de news sur ce souci... ?

nitrix-ud
05/11/2015, 11h37
Citation Envoyé par L.YA
Bonjour,

Vous avez tout les deux bien compris le fonctionnement du .ovhconfig et de son impact sur php-fpm et le display_errors.

Un processus php-fpm lancé pour un hébergement est bien évidemment associé à une version de php. Tout l'hébergement se partage ce processus php-fpm qui est éphémère. En conséquence, si un site provoque la création de ce processus avec le display_errors à "on" (development), cela impactera tout autre site de l'hébergement qui utilise php-fpm avec la même version.

Je vais demander à ce que le guide soit mis à jour pour prendre en compte la spécificité de php-fpm. Merci de nous avoir remonté cette source d'incompréhension.

Concernant le firewall, le travail est en amont de php-fpm, donc il n'est pas concerné par ce phénomène.
@L.YA ne pouvez-vous pas modifier le fonctionnement pour forcer la création d'un autre processus quand on a environment sur development ?


ou alors pourrait-on avoir des "versions php" supplémentaire.... "virtuel" pour le développement...
du genre : app.engine.version=5.6d

qui ouvrirait un nouveau processus (en php 5.6) car cette version de php ne serait pas utilisé par les autres multi-domaines...
cela réglerait le pb

L.YA
05/11/2015, 10h37
Bonjour,

Vous avez tout les deux bien compris le fonctionnement du .ovhconfig et de son impact sur php-fpm et le display_errors.

Un processus php-fpm lancé pour un hébergement est bien évidemment associé à une version de php. Tout l'hébergement se partage ce processus php-fpm qui est éphémère. En conséquence, si un site provoque la création de ce processus avec le display_errors à "on" (development), cela impactera tout autre site de l'hébergement qui utilise php-fpm avec la même version.

Je vais demander à ce que le guide soit mis à jour pour prendre en compte la spécificité de php-fpm. Merci de nous avoir remonté cette source d'incompréhension.

Concernant le firewall, le travail est en amont de php-fpm, donc il n'est pas concerné par ce phénomène.

nitrix-ud
05/11/2015, 09h27
Citation Envoyé par Kyon
Je te demande ça car j'ai constaté que sur un même hébergement, si tu as plusieurs ".ovhconfig" sur plusieurs multi-domaine (ou même sous-domaine), ça peut créer des incohérences. En fait, je crois que l'indication du guide est liée à d'anciennes offres où le multi-domaine était vraiment "séparé" de l'hébergement (on avait un user id différent voir un filer différent). A priori, maintenant, les multi-domaine (sûrement pour des raisons technique et de gestion) sont sur les même filer, et partagent le même "compte utilisateur".

Donc, après moult tests (si si), si tu utilises php-fpm, il va créer un ou des processus php-fpm et ce processus sera partagé par tous tes domaines (sous-domaine ou multi-domaine) qui sont sur le même hébergement. Donc, la première requête vers ce processus php-fpm va définir quel .ovhconfig va être utilisé... Ce qui peut créer cette impression de variation "aléatoire". Le mieux je pense est donc de n'utiliser qu'un seul et unique .ovhconfig à la racine de l'hébergement. Si OVH passe par là, une mise à jour du guide s'impose mais cela risque de le rendre assez compliqué .

Donc, si le premier .ovhconfig utilisé est celui où tu est en mode developement, cela va s'appliquer à tous l'hébergement (du moins, ceux qui utilisent la même version de php-fpm) pendant la durée de vie du processus.

J'ai refait encore des tests, et je pense que tu as raison

Il est possible d'avoir des .ovhconfig différents si on utilise des versions différentes de php

MULTI-DOMAINE A
app.engine=php
app.engine.version=5.6
http.firewall=none
environment=production

et

MULTI-DOMAINE B
app.engine=php
app.engine.version=5.5
http.firewall=none
environment=development

ça marche sans problème car la version php est différente



MULTI-DOMAINE A
app.engine=php
app.engine.version=5.6
http.firewall=none
environment=production

et

MULTI-DOMAINE B
app.engine=php
app.engine.version=5.6
http.firewall=none
environment=development

Là, il y a des interférences, et comme tu dis c'est le premier multi-domaine qui active le processus qui impose son .ovhconfig

Et enfin avec phpcgi, là pas de souci, on peut avoir la même version de php et des valeurs environment différentes.

@L.YA, est-ce possible de forcer un autre processus quand les valeurs environment sont différentes parce que là, le guide ne semble pas tout à fait exact...

NB : Le fichier .ovhconfig ne peut être placé qu'à la racine ou dans un répertoire de premier niveau, il n'est pas possible d'utiliser plusieurs fichiers pour faire cohabiter des configurations PHP différentes sur un même hébergement (sauf multi-domaine correctement déclaré).
Du coup je me pose aussi la question concernant le firewall, celui-ci est sensé être multi-domaine (il suffit de regarder le manager, on peut activer le firewall par multi-domaine...)

- - - Mise à jour - - -

Citation Envoyé par Kyon
As-tu un autre .ovhconfig qui utilise php fpm avec la même version ? Où seul la valeur d'environment change ?
j'étais en train de poster et je viens de voir ton message, oui c'est exactement ça

Kyon
05/11/2015, 09h11
As-tu un autre .ovhconfig qui utilise php fpm avec la même version ? Où seul la valeur d'environment change ?

nitrix-ud
05/11/2015, 09h01
Citation Envoyé par janus57
Sinon faut ouvrir un ticket auprès du support pour qu'il regarde un peu plus en profondeur voir vous explique c'est quoi votre erreur ou si l'erreur viens de chez eux.
Salut Janus57,

si on croit le guide OVH, on peut avoir des .ovhconfig différents par multi-domaine, d'ailleurs jusqu'à présent je ne peux pas dire le contraire puisque j'ai des multi-domaines avec des versions php différentes et des engines différents, et ça marche très bien

Donc de mon côté... pas d'erreur

un bug du côté d'OVH, oui c'est possible, c'est pour ça j'aimerais bien avoir l'avis de L.YA

janus57
05/11/2015, 08h47
Bonjour,

comme l'a dit @Kyon, si vous avez plusieurs .ovhconfig avec des instructions différentes à chaque fois il faut faire attention sur quel domaine vous vous trouver et surtout quel PHP-FPM vous allez appelé du coup (en rapport avec le .ovhconfig qu'il va prendre comme "base" pour ajuster les valeurs php).

Sinon faut ouvrir un ticket auprès du support pour qu'il regarde un peu plus en profondeur voir vous explique c'est quoi votre erreur ou si l'erreur viens de chez eux.

Cordialement, janus57

nitrix-ud
05/11/2015, 08h30
Citation Envoyé par Daniel60
J'ai de nouveau une erreur 500 pour ce petit bout de code :
Code PHP:
echo 'test 1' ??? echo 'test 2'
Et si tu mettais un point virgule après ta première instruction ?
oui, c'est le but c'est qu'il y ait une erreur

la question, c'est comment avoir le détail de l'erreur et pas une erreur 500 d'apache..., normalement on a le détail des erreurs en mettant
environment=development

Mais il semble que ca ne marche pas à tous les coups avec php-fhm

Daniel60
05/11/2015, 08h22
J'ai de nouveau une erreur 500 pour ce petit bout de code :
Code PHP:
echo 'test 1' ??? echo 'test 2'
Et si tu mettais un point virgule après ta première instruction ?

nitrix-ud
05/11/2015, 08h00
Citation Envoyé par Kyon
Donc, la première requête vers ce processus php-fpm va définir quel .ovhconfig va être utilisé... Ce qui peut créer cette impression de variation "aléatoire".
Kyon,

Je viens encore de faire des tests ce matin et en ce qui concerne la version de PHP, pas de doute, ça fonctionne comme il faut, plusieurs versions de PHP cohabitent sans problème sur mes hébergements (heureusement d'ailleurs car il le faut !)

Mais tu as peut-être une piste pour ce qui concerne l'"environment" prod ou dev ?

Kyon
04/11/2015, 20h45
Je te demande ça car j'ai constaté que sur un même hébergement, si tu as plusieurs ".ovhconfig" sur plusieurs multi-domaine (ou même sous-domaine), ça peut créer des incohérences. En fait, je crois que l'indication du guide est liée à d'anciennes offres où le multi-domaine était vraiment "séparé" de l'hébergement (on avait un user id différent voir un filer différent). A priori, maintenant, les multi-domaine (sûrement pour des raisons technique et de gestion) sont sur les même filer, et partagent le même "compte utilisateur".

Donc, après moult tests (si si), si tu utilises php-fpm, il va créer un ou des processus php-fpm et ce processus sera partagé par tous tes domaines (sous-domaine ou multi-domaine) qui sont sur le même hébergement. Donc, la première requête vers ce processus php-fpm va définir quel .ovhconfig va être utilisé... Ce qui peut créer cette impression de variation "aléatoire". Le mieux je pense est donc de n'utiliser qu'un seul et unique .ovhconfig à la racine de l'hébergement. Si OVH passe par là, une mise à jour du guide s'impose mais cela risque de le rendre assez compliqué .

Donc, si le premier .ovhconfig utilisé est celui où tu est en mode developement, cela va s'appliquer à tous l'hébergement (du moins, ceux qui utilisent la même version de php-fpm) pendant la durée de vie du processus.

nitrix-ud
04/11/2015, 20h32
Citation Envoyé par Kyon
nitrix-ud, as-tu plusieurs .ovhconfig sur ton hébergement (dans des dossiers différents par exemple pour d'autre domaines) ?
Oui des multi-domaines, mais comme c'est écrit ici : https://www.ovh.com/fr/g1207.configu...ebergement-web

Le fichier .ovhconfig ne peut être placé qu'à la racine ou dans un répertoire de premier niveau, il n'est pas possible d'utiliser plusieurs fichiers pour faire cohabiter des configurations PHP différentes sur un même hébergement (sauf multi-domaine correctement déclaré).
sauf multi-domaine correctement déclaré

j'ai des multi-domaines en php 5.4, qqs uns en php 5.6, un en test en php 7.0
pas de soucis au niveau des versions...

par contre, j'ai des soucis pour voir les erreurs php à tous les coups quand je passe en "development"

Je viens de retester tout de suite...

1) app.engine=php
environment=production
=> erreur 500

2)app.engine=php
environment=development
=> erreur 500

3)app.engine=phpcgi
environment=development
=> page d'erreur

4)app.engine=php
environment=development
là soucis, j'ai l'impression que c'est au petit bonheur la chance : page d'erreur ou erreur 500


Ma conclusion pour l'instant, c'est que pour debugger il faut se mettre en phpcgi...

Kyon
04/11/2015, 13h37
nitrix-ud, as-tu plusieurs .ovhconfig sur ton hébergement (dans des dossiers différents par exemple pour d'autre domaines) ?

janus57
04/11/2015, 13h25
Bonjour,

c'est surtout que PHP-FPM doit avoir un timeout (en secondes et/ou nombre de requêtes max) sur les process pour éviter de les laisser tourner trop longtemps mais en même temps d'en garder des actifs, je suppose que OVH en mutu sont soit en "ondemand" soit en "dynamic", donc forcément comme dit par @L.YA va y avoir un temps de latence avant que PHP-FPM ne prend la nouvelle configuration.

Donc oui le fait de passer sur "l'ancien" moteur PHP permet de forcer le reset de PHP-FPM vu qu'il doit se faire couper.

Cordialement, janus57

nitrix-ud
04/11/2015, 13h07
Citation Envoyé par L.YA
Pour changer de processus tout de suite, je dirai que vous pouvez essayer de changer la valeur de app.engine dans le .ovhconfig par "phpcgi" à la place de "php".

En phpcgi, un nouveau processus est créer pour chaque nouvelle requête. Cependant, c'est au détriment des avantages en terme de performances qu'apporte phpfpm (app.engine=php).
Merci pour le conseil

Bonne journée

- - - Mise à jour - - -

aie aie aie...

En fait il y a bien un problème....

J'ai de nouveau une erreur 500 pour ce petit bout de code :
Code PHP:
echo 'test 1
'
echo 'test 2';
?>
alors que mon ovhconfig est :
Code PHP:
app.engine=php
app
.engine.version=5.6
http
.firewall=none
environment
=development 

Je suis passé en phpcgi, et là j'ai les erreurs....
et je suis repassé en php et là ben j'ai des erreurs...

J'ai l'impression avec phpfpm, c'est une peu aléatoire... un coup ça marche un coup ça ne marche pas

Bon en tout cas au pire, on peut débugger en changeant l'engine, c'est déjà ça

L.YA
04/11/2015, 10h08
Bonjour nitrix-ud,

Heureux que vous ayez réussi !

Pour changer de processus tout de suite, je dirai que vous pouvez essayer de changer la valeur de app.engine dans le .ovhconfig par "phpcgi" à la place de "php".

En phpcgi, un nouveau processus est créer pour chaque nouvelle requête. Cependant, c'est au détriment des avantages en terme de performances qu'apporte phpfpm (app.engine=php).

nitrix-ud
04/11/2015, 09h56
Merci

C'est bon ! ça marche

Pourtant j'avais testé une bonne dizaine de fois d'alterner entre production et development...

apparemment, j'ai pas eu de chance... j'étais toujours sur le même processus

@L.YA, est-ce qu'il y a un moyen de changer de processus tout de suite ? (en changeant d'IP par exemple ?)

nitrix-ud
04/11/2015, 09h41
Citation Envoyé par L.YA
Si vous ne parvenez pas à vérifier ou à obtenir les erreurs après le passage en mode développement, faites-le moi savoir.
Je n'y suis pas parvenu pour l'instant, mais je n'ai peut-être pas laissé assez longtemps, je reteste...

L.YA
04/11/2015, 09h22
Bonjour nitrix-ud,

Comme l'ont pressenties Kyon et Abazada, il s'agit de la configuration au niveau du .ovhconfig qui impacte l'état de la directive "display_errors" de php.

Si votre .ovhconfig comporte la variable d'environnement "environment=production", vous obtiendrez une erreur 500 (directive display_errors à off au niveau de php).
A l'inverse, si vous mettez "environment=development", alors les erreurs php vont s'afficher (directive display_errors à on).

Si vous utilisez php-fpm (app.engine=php dans le .ovhconfig), le changement peut prendre quelques minutes (le temps qu'un nouveau processus php-fpm s'ouvre pour votre hébergement).

Si vous ne parvenez pas à vérifier ou à obtenir les erreurs après le passage en mode développement, faites-le moi savoir.

Abazada
04/11/2015, 09h00
Citation Envoyé par nitrix-ud
Sur mes anciens hébergements, en local le petit bout de code suivant // donne la réponse suivante :
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /home/xxxxxx/www/xxxxxx.php on line 4

sur les mutu2014, ça donne une erreur apache 500, et à ma connaissance ça n'était pas le cas avant...
Tu imagines tu fais une mise à jour sur un site, il y a un petit soucis et tu te retrouves avec une erreur 500 ? tu fais comment pour débugger ?
Tu vas lire les erreurs dans le fichier log des erreurs, tout simplement

Il est anormal (à mons avis) d'afficher les erreurs sur un site en ligne
Avant on paramétrait ça avec 'display_errors' et 'display_startup_errors' dans le code
Maintenant je pense que "environment" dans le .ovhconfig joue ce rôle

A toi de réactiver cet affichage d'erreurs avec ces paramètres si tu le souhaites,
mais n'oublie pas de revenir en 'production' ensuite.

nitrix-ud
04/11/2015, 07h40
Bonjour @Abazada

Évidemment, si tu as des erreurs sur du code en production, tu n'as plus de site... donc c'est pas tous les jours...

Mais là, j'ai basculé un site de php 5.6 à php 7, un des scripts faisait appel à un ereg (déprécié en php 5.6, obsolete en php 7) du coup ca m'a donné une erreur 500, normalement, ça te dit que le script fait appel à une fonction inconnue...

Sur mes anciens hébergements, en local le petit bout de code suivant :
Code PHP:
echo 'test 1
'

echo 'test 2';
?>
donne la réponse suivante :
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /home/xxxxxx/www/xxxxxx.php on line 4

sur les mutu2014, ça donne une erreur apache 500, et à ma connaissance ça n'était pas le cas avant...

Tu imagines tu fais une mise à jour sur un site, il y a un petit soucis et tu te retrouves avec une erreur 500 ? tu fais comment pour débugger ?

Sinon pas de différence entre production et development pour le .ovhconfig

Abazada
04/11/2015, 01h21
Au passage, il est absolument anormal de trouver des erreurs de syntaxe sur du code en production.
Il y a des moyen très simples d'éviter cela, par exemple :
Code:
$ alias php=/usr/local/php5.6/bin/php
$ for file in $(find . -name "*.php"); do php -l $file; done | grep Error
Errors parsing demo/test.php

Abazada
04/11/2015, 01h01
Citation Envoyé par nitrix-ud
Le pb c'est qu'une erreur PHP,
au lieu d'afficher une page avec le détail de l'erreur (avec un status code de 200),
trigger une erreur apache 500
Bonjour. Je ne suis pas certain de comprendre ...

Il me semble normal et logique que tu obtiennes une erreur 500
si ton code Php contient une erreur de syntaxe...

C'est le comportement habituel que j'ai sur tous mes hébergements,
que ce soit mutu, vps ou dédié.

Une code 200 voudrait dire "tout s'est bien passé et voici le résultat".

Kyon
03/11/2015, 22h44
Bonsoir nitrix-ud,

Par curiosité, dans le .ovhconfig lié à ton hébergement, le paramètre d'environnement est-il production ou development ?

PS : Je ne crois pas que nous soyons en mesure d'envoyer des messages privés sur le forum.

nitrix-ud
03/11/2015, 20h36
Citation Envoyé par L.YA
Bonsoir à vous deux,

Pouvez-vous me communiquez les noms de domaines associés à vos hébergement svp ?

Merci d'avance !
Bonjour,

je fais comment pour vous envoyer un message privé ?

Cela étant, pouvez-vous vérifier vite fait sur n'importe quel mutu2014... je pense que c'est un problème général
j'ai plusieurs hébergements, le problème est présent sur tous...

monsieurlovaaa
03/11/2015, 19h54
Misterlova.com (cette histoire m'a rendu dingue)

L.YA
03/11/2015, 19h46
Bonsoir à vous deux,

Pouvez-vous me communiquez les noms de domaines associés à vos hébergement svp ?

Merci d'avance !

monsieurlovaaa
03/11/2015, 19h37
Ok Merci.
Je vais aller sur Twitter.
J'ai déjà modifié/effacé/ le .htaccess en suivant le guide (j'y suis depuis hier) et rien n'y fait.

PHP erreur 500 interne du serveur
html fonctionnent pourtant!

Je crois que c'est dû à leurs essais PHP7, et nous payons les pots cassés.
C'est révoltant.

Merci à toi. Je vais sur Twitter, leur botter un peu les fesses!

nitrix-ud
03/11/2015, 19h27
Difficile de te répondre,

si tu as effectivement une erreur PHP mais que tu ne peux pas la voir parce qu'à la place tu as une erreur 500, c'est pas facile...

sinon une erreur 500 vient souvent d'une erreur dans le .htaccess
regarde ce guide ovh : http://guide.ovh.com/InternalServerError

Et sinon, tu peux peut-être faire un petit tweet au support ovh pour qu'ils accélèrent en donnant le numéro de ton ticket (@ovh_support_fr)

monsieurlovaaa
03/11/2015, 19h21
Merci pour la réponse nitrix-ud.
Tu parle très langage technique et je te salue pour cela.

J'y comprends pas grand chose, alors selon toi, comment faire pour réafficher mon site au plus vite? Le support ne répond pas depuis 24H! Je suis fou de rage contre eux. Et mon site perd de l'argent pendant ce temps.

nitrix-ud
03/11/2015, 19h15
Bonjour monsieurlovaaa

Peut-être que tu as une erreur php (fatale) et que du coup ton site est en erreur 500 à cause de ce bug sur les mutu2014.

Cela dit sur mes hébergements mutu2014, un site sans erreur fonctionne normalement...

Le pb c'est qu'une erreur PHP, au lieu d'afficher une page avec le détail de l'erreur (avec un status code de 200), trigger une erreur apache 500

monsieurlovaaa
03/11/2015, 19h10
Absolument!

Je ne sais rien des tests mais voici:

Sur mon nouveau mutu PRO2014, plus aucun php ne marche!
Mon site principal est en erreur 500 depuis près de 24h!

Et le support ovh ne répond pas aux tickets d'assistance! Silence radio!

J'ai un plan90P ancien, mes anciens sites dessus marchent. php wordpress !!!

C'est quoi ce bord.... ??

nitrix-ud
03/11/2015, 19h07
Bonjour,

J'ai fait des tests ce matin pour tester PHP 7, et je me suis aperçu que les erreurs fatales PHP trigger des erreurs 500 !!!!
en php 7 mais du coup aussi en php 5

super pour faire des tests ....

Vous avez des soucis sur les hébergements mutu ?? Pourtant je n'ai rien vu dans les travaux...

par exemple, ce petit bout de code donne une erreur 500
Code PHP:

echo 'test 1
'

echo 'test 2';
?>
Ce même bout de code ne trigger pas d'erreur 500 sur un ancien hébergement (mediaplan, business, ...)

@TeamMutu, vous pouvez y jeter un oeil ?