PHP : Automodification d'un script

Fermé
new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013 - 20 oct. 2008 à 15:18
new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013 - 20 oct. 2008 à 15:42
Bonjour,

Voici la version courte d'un script plus long qui ne marche pas : en principe, au rechargement, le contenu du tableau devrait avoir changé si ça fonctionnait comme je le souhaite. Malheureusement, il semble que la fonction var_export, qui "Retourne la représentation de la variable lorsque le paramètre return est utilisé et évalué à TRUE", renvoit bien quelque chose qui ressemble à la string "array ( 'nom' => 'charlie', 'message' => 'bonjour', )" mais qui n'est pas une string, ou du moins n'est pas interprété comme tel lorsque str_replace est censée changer la vieille valeur contre une nouvelle valeur.

Par quelle commande dois-je passer, si ce n'est pas par https://www.php.net/manual/fr/function.var-export.php ?

Mon code raccourcis :

<?php
$ce_script = basename($_SERVER['PHP_SELF']);

$tableau = array ( 'nom' => 'charlie', 'message' => 'bonjour', )  ;
$autre_tableau = array ( 'nom' => 'paul', 'message' => 'salut', );

print_r ($tableau) ;

$old = Var_export($value, true);
$new = Var_export($other_value, true);

$content=file_get_contents($ce_script);	
$modif_content = str_replace($old, $new, $content);

$file2=fopen($ce_script,'w+');
fwrite($file2,$modif_content);
fclose($file2);
?>
A voir également:

2 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
20 oct. 2008 à 15:25
Salut,

Au lieu de $_SERVER['PHP_SELF'], utilise la constante __FILE__
Comme ça au lieu d'essayer d'ouvrir http://domaine.com/ton_script.php, il va ouvrir /usr/local/http.../ton_script.php

Ca fait une grosse différence: par http il va ouvrir la page rendue à l'utilisateur et non le code php.
Et l'écriture ici ne peut qu'échouer puisque tu essaies d'écrire sur un fichier contenu dans une url.

Dernière chose: il est toujours lragement préférable de modifier des données plutôt que du code. Tu devrais modifier un fichier de données plutôt qu'un fichier php.
1
new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013 19
20 oct. 2008 à 15:42
Comment utiliser la constante _FILE_ ? Par un define ?

Ca n'est pas lié à mon pb en tout cas : en fait ce qui se passe est que la "représentation" renvoyée par Var_export est Array ( [nom] => paul [message] => salut ) au lieu de array ( 'nom' => 'paul', 'message' => 'salut', )

La question est donc : est-ce faisable de générer une chaine correspondant à la définition initiale du tableau ?

fonction ($tableau) pour renvoyer array ( 'clef1' => 'valeur1', 'clef2' => 'valeur2', 'clef3' => 'valeur3',)

Sinon, comment ça se passe lorsque l'on travail sur un fichier de config séparé ? Le problème doit être le même non ? Il doit bien falloir remplacer des valeurs obsolètes par des valeurs nouvelles, non ?
1