Solution au problème selon lequel exec php ne peut pas être exécuté : 1. Modifiez la première ligne du fichier yii pour spécifier directement l'interpréteur php ; 2. Modifiez la méthode d'appel exec pour spécifier directement l'interpréteur php.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.
Pourquoi l'exécutable php ne peut-il pas être exécuté ?
Il y a une tâche planifiée sur laquelle je veux cliquer pour la démarrer sur la page de gestion en arrière-plan OSS, mais j'ai essayé plusieurs méthodes mais cela ne fonctionne pas, quel que soit le système ou ; exec (en l'exécutant manuellement sur la ligne de commande du shell, il n'y a pas de problème) ); Au départ, j'ai soupçonné un problème d'autorisation avec l'utilisateur nginx du serveur Web, mais j'ai découvert plus tard que la variable d'environnement ne pouvait pas trouver le fichier exécutable php (car le nginx l'utilisateur est un utilisateur restreint);
exec("/home/app/example/api/app/yii demand/virtual {$id}", $output); print_r($output);
et supérieur Une fois le script exécuté, seul Array()
est affiché, évidemment le code métier n'est pas exécuté (la première ligne du le code commercial est affiché);
// http://oss.example.com/index.php?r=demand/demand-ip/msg&id=1929 点击后执行 exec("/home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
Une fois le script ci-dessus exécuté, il y a des sorties d'erreur : Array ( [0] => /usr/bin/env: php: No such file or directory )
Cette phrase provient de la première ligne du fichier yii /usr/bin/env: php
. Il est destiné à indiquer où se trouve l'interpréteur de script php qui exécute le fichier yii ; mais la sortie d'erreur #!/usr/bin/env php
indique que php est introuvable ; Tutoriel/usr/bin/env: php: No such file or directory
"]
#!/usr/bin/env php
exec("/usr/local/bin/php /home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
#!/usr/local/bin/php
$cmd = '/usr/local/bin/php /home/app/example/yapp/yii demand/finish 2057'; $pid_file = 'msgrepeat.pid'; $exec_cmd = sprintf("%s > /dev/null 2>&1 & echo $! > %s & cat %s", $cmd, $pid_file, $pid_file); exec($exec_cmd);
Deux méthodes de traitement de la console du framework yii et du Web ; problème de savoir comment améliorer la testabilité de crontab;
Le problème de savoir comment améliorer l'expérience utilisateur de crontab;Le front et le backend La manière de partager Controller/Action ;
Ou le problème du partage pratique des bibliothèques de code entre plusieurs projetsCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!