Echapper la touche dollar avec cat EOF

Résolu/Fermé
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022 - Modifié le 22 janv. 2018 à 13:01
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 23 janv. 2018 à 07:46
Bonjour,
Dans mon projet en ruby, je dois créer un fichier php a la volée a la racine de mon serveur web (/var/www) , pour ce faire j'utilise cat EOF qui est un grand classique, mais en tant que gros débutant que je suis en programmation, je me suis aperçu que le dollar $ n'était pas prit en compte lors de l'écriture un fichier.Du coup c'est problématique car le script php ne lance pas vue que les variables avec le "$" ne sont pas prises en compte (erreur: 500).

Le script php a créer a la racine de /var/www est le suivant:

<?php


$maccheck=system("/usr/sbin/arp -a|grep ".$_SERVER['REMOTE_ADDR']."\)|cut -f4 -d\" \"");
function redirection($url)
{
die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
};
if($maccheck == '#{$mac1}' OR $maccheck == '#{$mac2}' OR $maccheck == '#{$mac3}')
{

redirection("#{$page}.php" );
}

else
{
redirection("#{$pagebis}.php" );
}
?>


La sortie est la suivante une fois le fichier crée avec EOF, j'ai mis des commentaires pour etre plus clair.

<?php


=system("/usr/sbin/arp -a|grep ".['REMOTE_ADDR'].")|cut -f4 -d" ""); ### Variable jamais écrite avec EOF: $maccheck
function redirection()
{
die('<meta http-equiv="refresh" content="0;URL='..'">');
};
if( == '' OR == '44:78:3e:2a:fc:e8' OR == '') ## # Variable jamais écrite avec EOF: $maccheck
{

redirection("accueil.php" );
}

else
{
redirection("visitemoi.php" );
}
?>


En indiquant a EOF de quoter le dollar de la variable PHP $maccheck tel que:

\\\$


la sortie du fichier crée est exactement la meme que celle que je veux, tout y est et il y a aucune différence.Sauf que je me tape une erreur 500 avec ce retour de commande quand j'essai de lancer le script dans un terminal:

PHP Parse error: syntax error, unexpected '""' (T_CONSTANT_ENCAPSED_STRING)


Je tourne en rond depuis 2 jours a cause de ceci...

A voir également:

4 réponses

hichamaziz Messages postés 28 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 2 avril 2019 1
22 janv. 2018 à 13:12
merci pour votre poste c est tres utile
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié le 22 janv. 2018 à 13:27
hello
avec 'EOF'
$ cat <<EOF > z1
> $hello
> EOF
$ cat z1

$ cat <<'EOF' > z1
$hello
EOF
$ cat z1
$hello
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
22 janv. 2018 à 14:24
'EOF' marche bien mais je continu a me prendre une erreur avec php:
PHP Parse error:  syntax error, unexpected '""' (T_CONSTANT_ENCAPSED_STRING) in /var/www/index.php on line 2


Le script marche pourtant bien sans utiliser EOF je comprends pas ce qui cloche.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
22 janv. 2018 à 14:51
je continu a me prendre une erreur
à la création du script ou lors de son exécution ?
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
Modifié le 22 janv. 2018 à 14:54
Lors se son exécution.

Pourtant si je créer moi meme ce fichier php sans 'EOF' et que je me rend sur ce fichier php dans mon navigateur (127.0.0.1/index.php) je n'ai pas de problème.
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
22 janv. 2018 à 18:18
Pas d'idée concernant cette erreur PHP qui s'affiche seulement quand je tente d'écrire le fichier automatiquement ?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
23 janv. 2018 à 07:46
montre la ligne 2 du fichier créé
0
Utilisateur anonyme
22 janv. 2018 à 18:37
salut,

ça a l'air bien pourri quand même, comme démarche, d'utiliser ruby pour appeler bash pour écrire du php qui écrira du html...
:(
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
22 janv. 2018 à 18:41
Si tu as une autre solution pour écrire un fichier php a la volée je suis preneur.
0
Utilisateur anonyme
22 janv. 2018 à 20:19
il faudrait savoir pourquoi tu as choisi cette "solution".

php est bien censé générer dynamiquement du html ? donc, comment se fait-il qu'il doive, lui, être aussi généré dynamiquement ?
0