Erreur http 500

Bonjour à tous,
voilà j’ai un site installé chez online.net (aucune aide de leur part) et quand j’essaie de mettre à jour des scripts .php dans des dossiers /var/www/monsite et que je les exécute, pour mettre à jour des stats, etc. cela abouti à une page blanche erreur http 500.
Alors qu’il devrait fonctionner, testé ailleurs et sur une machine virtuelle.
Vous avez une idée ?
merci

C’est typique d’une erreur PHP.
Une fonction non gérée, un ‘;’ oublié …
Là, seul les logs PHP pourraient t’aider à y voir mieux … et parfois certains logs web service … si tu y as accès !

Revoie ton code, quand même :wink:

Salut, le script ne vient pas de moi mais du codeur lui même, testé par d’autres et sur une machine virtuel sans problème, il n’y a que chez online.net sur la machine dédiée que ça bloque.
Je ne sais pas vraiment où chercher, problème de chmod, de .htaccess ? j’ai lu pas mal de truc dessus mais je suis perdu.

Par exemple !
À toi de te renseigner chez online, si certaines fonctions PHP sont inautorisées …

Cela peut être aussi du fait d’utiliser du vieux code PHP sur du PHP 7, par exemple.
Tu exécutes quelle version de code PHP, sur quelle architecture PHP ?!

Nous, on n’est pas devin … le plus à même à t’aider est quand même le codeur :wink:

Chez Online le côté software ils ne gèrent pas à moi de mon débrouiller.
Pour le codeur ça marche chez lui et chez les autres donc c’est encore pour moi
J’ai la version php7 on me conseille de repasser à la version php5 vous auriez un tuto là dessus ?
merci

PHP Parse error: syntax error, unexpected ‘function\xc2\xa0cleanup_log’ (T_STRING) in /var/www/include/cleanup/funds_clean.php on line 20
funds_clean sur pastebin
Franchement qu’est ce qui cloche ? je ne pige pas

Avec quel éditeur avez-vous modifié le fichier /var/www/include/cleanup/funds_clean.php?
Je pose cette question car la présence de \xc2\xa0 me fait penser à un pataquès dans les encodages, du genre vous tapez une lettre accentuée, votre éditeur mal configuré vous affiche quelque chose qui vous semble correct mais en le processus php qui relit le fichier émet une erreur car il suppose un encodage différent pour le fichier.

Ah, les joies de l’unicode ! Cherchez dans pause café une image où Martine en bave avec UTF-8 :slight_smile:

Que donne la commande

head -22  /var/www/include/cleanup/funds_clean.php | tail -4 | od -c

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة

F. Petitjean
Ingénieur civil du Génie Maritime.

« Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !! »
Pierre Dac

Bonjour, merci pour votre aide, j’utilise la commande nano pour éditer les fichiers .php
et voici le résultat:

0000000 f u n c t i o n 302 240 c l e a n u
0000020 p _ l o g ( $ d a t a ) \n { \n 302
0000040 240 302 240 302 240 302 240 $ t e x t 302 240 = 302
0000060 240 s q l e s c ( $ d a t a [ ’ c
0000100 l e a n _ t i t l e ’ ] ) ; \n 302
0000120 240 302 240 302 240 302 240 $ a d d e d 302 240 =
0000140 302 240 T I M E _ N O W ; \n
0000154

Euh, oui, là, ce n’est pas normal … et, même ce n’est pas le comportement normal de nano !

Salut,

[quote]cat /var/www/include/cleanup/funds_clean.php
file /var/www/include/cleanup/funds_clean.php
ls -la /var/www/include/cleanup/funds_clean.php
apt install dos2unix # Ou apt-get install suivant la version de debian que tu as
dos2unix /var/www/include/cleanup/funds_clean.php[/quote]

Tu peux donner la sortie du cat, du file e du ls ?
Et retester après le dos2unix ?

Merci,

Pas la peine de lancer dos2unix. Les fins de ligne sont correctes.

Reste à trouver comment ont été introduites toutes ces séquences 302 140 en octal :confounded:

Les sorties de

apt-cache policy nano
locale
update-alternatives --display editor

seraient intéressantes.

Avec quel éditeur de texte êtes-vous le plus à l’aise ?

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة

F. Petitjean
Ingénieur civil du Génie Maritime.

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

Juste une faute de frappe : la séquence est en fait octal 302 240


octal 302 240 <=> hexa c2 a0 => UTF-8 NO-BREAK SPACE

Les caractères espace dans le fichier PHP ont sans doute été remplacés par des caractères espace insécable <=> NO-BREAK SPACE

Mais je ne sais pas quel est l’éditeur de texte qui a pu faire ça.

Peut-être une macro de l’éditeur…

Ou bien un copié/collé depuis un message d’un forum, affiché par une fenêtre d’un navigateur
passant par un presse papier depuis lequel le message a été collé dans un éditeur dont une macro aurait pu modifier ces caractères espace.
Ça fait que chacun de ces intermédiaires pourrait être suspecté


Avec la ligne de commande suivante :

sed -i.avant 's/\xc2\xa0/ /g' /var/www/include/cleanup/funds_clean.php

Les caractères espace insécable du fichier /var/www/include/cleanup/funds_clean.php
seront remplacés par un caractère espace

Et le fichier original sera sauvegardé sous le nom :

/var/www/include/cleanup/funds_clean.php.avant

cat /var/www/include/cleanup/funds_clean.php

<?php
/**
 |--------------------------------------------------------------------------|
 |   https://github.com/Bigjoos/                			    |
 |--------------------------------------------------------------------------|
 |   Licence Info: GPL			                                    |
 |--------------------------------------------------------------------------|
 |   Copyright (C) 2010 U-232 V4					    |
 |--------------------------------------------------------------------------|
 |   A bittorrent tracker source based on TBDev.net/tbsource/bytemonsoon.   |
 |--------------------------------------------------------------------------|
 |   Project Leaders: Mindless,putyn.					    |
 |--------------------------------------------------------------------------|
  _   _   _   _   _     _   _   _   _   _   _     _   _   _   _
 / \ / \ / \ / \ / \   / \ / \ / \ / \ / \ / \   / \ / \ / \ / \
( U | - | 2 | 3 | 2 )-( S | o | u | r | c | e )-( C | o | d | e )
 \_/ \_/ \_/ \_/ \_/   \_/ \_/ \_/ \_/ \_/ \_/   \_/ \_/ \_/ \_/
 */  
function cleanup_log($data)
{
    $text = sqlesc($data['clean_title']);
    $added = TIME_NOW;
    $ip = sqlesc($_SERVER['REMOTE_ADDR']);
    $desc = sqlesc($data['clean_desc']);
    sql_query("INSERT INTO cleanup_log (clog_event, clog_time, clog_ip, clog_desc) VALUES ($text, $added, $ip, {$desc})") or sqlerr(__FILE__, __LINE__);
}
function docleanup($data)
{
    global $INSTALLER09, $queries, $mc1;
    ignore_user_abort(1);
    // ===Clear funds after one month
    $secs = 1 * 60;
    $dt = sqlesc(TIME_NOW - $secs);
    sql_query("DELETE FROM funds WHERE added < $dt");
    //if (mysqli_affected_rows() > 0)
    $mc1->delete_value('totalfunds_');
    // ===End
        
    if ($queries > 0) write_log("Delete Old Funds Clean -------------------- Delete Old Funds cleanup Complete using $queries queries --------------------");
    if (false !== mysqli_affected_rows($GLOBALS["___mysqli_ston"])) {
        $data['clean_desc'] = mysqli_affected_rows($GLOBALS["___mysqli_ston"]) . " items deleted/updated";
    }
    if ($data['clean_log']) {
        cleanup_log($data);
    }
}
?>
file /var/www/include/cleanup/funds_clean.php

/var/www/include/cleanup/funds_clean.php: PHP script, UTF-8 Unicode text
ls -la /var/www/include/cleanup/funds_clean.php

-rwxrwxrwx 1 root root 2540 nov.   6 17:43 /var/www/include/cleanup/funds_clean.php
dos2unix /var/www/include/cleanup/funds_clean.php

dos2unix: converting file /var/www/include/cleanup/funds_clean.php to Unix format ...
apt-cache policy nano

nano:
  Installé : 2.2.6-3
  Candidat : 2.2.6-3
 Table de version :
 *** 2.2.6-3 0
        500 http://ftp.univ-pau.fr/linux/mirrors/debian/ jessie/main amd64 Packages
        100 /var/lib/dpkg/status
locale

LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
update-alternatives --display editor

editor - mode automatique
 le lien pointe actuellement sur /bin/nano/bin/nano - priorité 40
 lien secondaire editor.1.gz : /usr/share/man/man1/nano.1.gz/usr/bin/vim.tiny - priorité 10
 lien secondaire editor.1.gz : /usr/share/man/man1/vim.1.gz
 lien secondaire editor.fr.1.gz : /usr/share/man/fr/man1/vim.1.gz
 lien secondaire editor.it.1.gz : /usr/share/man/it/man1/vim.1.gz
 lien secondaire editor.ja.1.gz : /usr/share/man/ja/man1/vim.1.gz
 lien secondaire editor.pl.1.gz : /usr/share/man/pl/man1/vim.1.gz
 lien secondaire editor.ru.1.gz : /usr/share/man/ru/man1/vim.1.gz
La « meilleure » version actuelle est « /bin/nano ».

Re, après avoir testé toutes les sorties que TrashHard & littlejohn75 m’ont demandé, j’ai essayé cette ligne de commande,

sed -i.avant ‘s/\xc2\xa0/ /g’ /var/www/include/cleanup/funds_clean.php

et je n’ai plus d’erreur http 500 !! pouvez vous un peu plus m’expliquer le pourquoi du comment ?
Merci à vous

Bonjour SanJose

sed -i.avant 's/\xc2\xa0/ /g' /var/www/include/cleanup/funds_clean.php

Cette ligne de commande a servi à remplacer chaque caractère espace insécable existant dans le fichier /var/www/include/cleanup/funds_clean.php par un caractère espace


Dans cette ligne de commande, j’ai utilisé la valeur hexadécimale c2 a0 qui correspond au caractère espace insécable

Et entre les deux barres obliques qui suivent, j’ai inséré le caractère que je voulais utiliser comme caractère de remplacement : un caractère espace

Comme le caractère espace insécable n’est pas reconnu par l’interpréteur PHP comme un caractère de séparation de mots, PHP ne pouvait pas interpréter correctement les lignes de commandes de ton fichier.


Cette ligne de commande a aussi créé une copie de sauvegarde du fichier original.
Ce fichier de sauvegarde a été nommé comme celui d’origine, mais en aboutant .avant à la fin de son nom.

Puisque maintenant tu n’as plus besoin de la copie du fichier original qui contient des espace insécables,
tu peux le supprimer en lançant la commande suivante :

rm /var/www/include/cleanup/funds_clean.php.avant


Je me suis permis de modifier l’apparence des lignes de commandes et de leur retour dans ton avant-dernier message.

Ouah merci pour cette explication, cela viendrait d’un mauvais copier/coller ? nano n’y est pour rien ?

Ma tartine est beaucoup plus lisible c’est clair

Bonsoir SanJose

À part les suppositions que je faisais quelques messages plus haut, je ne peux rien affirmer.