J'ai un petit problème avec l'ajout de Shebang #! avec mon script php sur RedHat linux. J'ai un petit morceau de code de test avec Shebang ajouté (j'ai également essayé différentes variantes), mais je reçois le message d'erreur suivant chaque fois que j'essaie d'exécuter le script.
Message d'erreur:
-bash: script.php: command not found
Script de test:
#!/bin/env php
<?php echo "test"; ?>
Shebang #! variations:
#!/usr/bin/php
#!/usr/bin/env php
Il devrait (pour la plupart des systèmes) être #!/usr/bin/env php
, mais votre erreur n'est pas liée à cela.
-bash: script.php: command not found
Il indique que script.php est introuvable.
Si le problème était la ligne Shebang, l'erreur dirait quelque chose comme:
bash: script.php: /usr/env: bad interpreter: No such file or directory
Vraisemblablement, vous tapez script.php
et le fichier ne se trouve pas dans un répertoire sur votre $PATH
ou n'est pas exécutable.
chmod +x script.php
../script.php
.Au lieu de 2, vous pouvez déplacer/copier/créer un lien symbolique vers le fichier répertorié dans $PATH
ou modifiez le $PATH
pour inclure le répertoire contenant le script.
Si votre script ne se trouve pas dans votre /usr/local/bin
et est exécutable, vous devez préfixer votre script avec php
comme ceci:
php myscrip.php
Pour les shebangs, voici ce que j'utilise:
Comme ça:
#!/usr/bin/php
ou ca:
#!/usr/bin/env php
En réponse au commentaire de @ NVRM concernant l'utilisation unique de -d
, ce n'est pas vrai.
Commencez par un chmod +x script
as
#!/usr/bin/php
<?php
phpinfo();
et courir script | grep -E 'memory_limit|error_reporting'
, et vous verrez
error_reporting => no value => no value
memory_limit => 128M => 128M
Ajoutez maintenant quelques -d
entrées pour avoir
#!/usr/bin/php -d memory_limit=2G -d error_reporting=-1
<?php
phpinfo();
et relancez script | grep -E 'memory_limit|error_reporting'
, et vous verrez maintenant
error_reporting => -1 => -1
memory_limit => 2G => 2G
Démontrant ainsi que vous pouvez définir plusieurs options.
En fait, c'est toute la ligne de commande avec laquelle vous travaillez ici. Vous pouvez donc charger des extensions, utiliser une configuration différente, etc., tout ce que vous pouvez faire sur la ligne de commande.
Laissant ici quelques petites notes:
Pour utiliser un binaire php situé dans le même dossier.
Par exemple, un exécutable php7.2 copié à partir de /usr/bin
est dans le même chemin le long d'un script hello
.
#!./php7.2
<?php
echo "Hello!";
Pour l'exécuter:
./hello
Qui se comportent tout autant que:
./php7.2 hello
Cela donne la portabilité, mais méfiez-vous des architectures système, le binaire php peut ne pas correspondre à la plate-forme cible.
Définition de la mémoire autorisée à partir du hashbang:
Nous pouvons définir n INI entrée à partir de la ligne de hachage:
#!/usr/bin/php -d memory_limit=2048M
<?php
phpinfo();
exit;
Ensuite pour voir si php avait compris, en utilisant phpinfo ():
./myphpProg | grep memory
La sortie Shell correcte doit contenir:
memory_limit => 2048M => 2048M
Faire ce qui précède est similaire à cette ligne de commande:
php -d memory_limit=2048M myphpProg.**php**
C'est pourquoi nous ne pouvons définir qu'une seule valeur ini dans les hashbangs, car php n'accepte qu'un seul paramètre - d à la fois.