Maison >développement back-end >tutoriel php >Exécution en ligne de commande sous PHP
Cet article présente principalement l'exécution en ligne de commande sous PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Usage: php [options] [-f] <file> [args...] php [options] -r <code> [args...] php [options] [-- args...] -s Display colour syntax highlighted source. -w Display source with stripped comments and whitespace. -f <file> Parse <file>. -v Version number -c <path>|<file> Look for php.ini file in this directory -a Run interactively -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -z <file> Load Zend extension <file>. -l Syntax check only (lint) -m Show compiled in modules -i PHP information -r <code> Run PHP <code> without using script tags <?..?> -h This help args... Arguments passed to script. Use -- args when first argument starts with - or script is read from stdin
CLI SAPI propose trois manières différentes d'obtenir le PHP que vous souhaitez exécuter Code :
Dans l'environnement Windows, essayez d'utiliser des guillemets doubles, et dans l'environnement Linux, essayez d'utiliser des guillemets simples.
Laissez PHP exécuter le fichier spécifié.
|
Les deux méthodes ci-dessus (avec ou sans le paramètre -f) peuvent être Exécutez le fichier my_script.php donné. Vous pouvez choisir n'importe quel fichier à exécuter. Le script PHP que vous spécifiez n'a pas besoin d'avoir l'extension .php. Il peut avoir n'importe quel nom de fichier et n'importe quelle extension.
Exécutez le code PHP directement sur la ligne de commande.
|
Lorsque vous utilisez cette méthode, veuillez faire attention à la substitution des variables shell et à l'utilisation de guillemets.
Remarque : Veuillez lire attentivement l'exemple ci-dessus, il n'y a pas de démarrage lorsque exécuter le code et le marqueur de fin ! Avec les paramètres -r, ces balises ne sont pas nécessaires et leur ajout entraînera une erreur de syntaxe.
Fournissez le code PHP qui doit être exécuté via l'entrée standard (stdin).
L'utilisation ci-dessus nous fournit des fonctions très puissantes, nous permettant de générer dynamiquement du code PHP et d'exécuter ces codes via la ligne de commande comme le montre l'exemple suivant :
$ some_application | some_filter | php | sort -u >final_output.txt |
以上三种运行代码的方法不能同时使用。
和所有的外壳应用程序一样,PHP 的二进制文件(php.exe 文件)及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但您通常都不会超过该限制)。传递给您脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称(当 PHP 代码来自标准输入获直接用 -r 参数以命令行方式运行时,该名称为“-”)。另外,全局变量 $argc 存有 $argv 数组中成员变量的个数(而非传送给脚本程序的参数的个数)。
只要您传送给您脚本的参数不是以 - 符号开头,您就无需过多的注意什么。向您的脚本传送以 - 开头的参数会导致错误,因为 PHP 会认为应该由它自身来处理这些参数。您可以用参数列表分隔符 -- 来解决这个问题。在 PHP 解析完参数后,该符号后所有的参数将会被原样传送给您的脚本程序。
# 以下命令将不会运行 PHP 代码,而只显示 PHP 命令行模式的使用说明: $ php -r 'var_dump($argv);' -h Usage: php [options] [-f] <file> [args...] [...] # 以下命令将会把“-h”参数传送给脚本程序,PHP 不会显示命令行模式的使用说明: $ php -r "var_dump($argv);" -- -h array(2) { [0]=> string(1) "-" [1]=> string(2) "-h" } |
除此之外,我们还有另一个方法将 PHP 用于外壳脚本。您可以在写一个脚本,并在第一行以 #!/usr/bin/php 开头,在其后加上以 PHP 开始和结尾标记符包含的正常的 PHP 代码,然后为该文件设置正确的运行属性。该方法可以使得该文件能够像外壳脚本或 PERL 脚本一样被直接执行。
#!/usr/bin/php <?php var_dump ($argv); ?> <span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span>
|
假设改文件名为 test 并被放置在当前目录下,我们可以做如下操作:
$ chmod 755 test $ ./test -h -- foo array(4) { [0]=> string(6) "./test" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" } |
Comme vous pouvez le voir, lorsque vous transmettez des paramètres commençant par - au script, le script s'exécute toujours normalement.
--------------------------------------------- --------------------------------Options de commande--------------- ------ ------------------------------------
Tableau 23-3. Options de ligne de commande
Nom de l'option | Description |
---|---|
-s |
Afficher les fichiers sources avec coloration syntaxique. Ce paramètre utilise le mécanisme intégré pour analyser le fichier et générer une version HTML en surbrillance et écrire le résultat sur la sortie standard. Veuillez noter que ce processus ne fait que générer un bloc ffbe95d20f3893062224282accb13e8f [...] 1cd55414ff5abdfea5dd958e7e547fdd de balises HTML, et ne contient aucun HTML en-tête.
|
-w |
affiche le code source avec les commentaires et les espaces supprimés.
|
-f | Analyser et exécuter le nom de fichier donné. Ce paramètre est facultatif et n'a pas besoin d'être ajouté. Il suffit de spécifier le nom du fichier à exécuter. |
-v |
Écrivez les informations de version de PHP, PHP SAPI et Zend sur la sortie standard. Par exemple : $ php -v PHP 4.3.0-dev (cli), Copyright (c) 1997-2002 Le groupe PHP Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies |
-c |
En utilisant ce paramètre, vous pouvez spécifier un emplacement Le répertoire du fichier php.ini, ou spécifiez directement un fichier INI personnalisé, dont le nom de fichier ne peut pas être php.ini. Par exemple : $ php -c /custom/directory/ mon_script.php $ php -c /custom/directory/custom-file.ini my_script.php |
-a | Exécutez PHP de manière interactive. |
-d |
Utilisez ce paramètre pour définir vous-même la valeur de la variable dans le fichier php.ini , sa syntaxe Pour : -d configuration_directive[=value]Exemple : # Omettre la partie valeur définira la directive de configuration donnée sur "1" $ php -d max_execution_time -r '$foo = ini_get("max_execution_time"); var_dump($foo);' chaîne(1) "1" # Passer une partie de valeur vide définira la directive de configuration sur "" php -d max_execution_time= -r '$foo = ini_get("max_execution_time"); var_dump($foo);' chaîne(0) "" # La directive de configuration sera définie sur tout ce qui est passé après le caractère '=' $ php -d max_execution_time=20 -r '$foo = ini_get("max_execution_time"); var_dump($foo);' chaîne(2) "20" $php -d max_execution_time=doesntmakesense -r '$foo = ini_get("max_execution_time"); var_dump($foo);' string(15) "doesntmakesense" |
-e | Générer des informations étendues pour les débogueurs, etc. |
-z | Charger la bibliothèque d'extensions Zend. Si seul un nom de fichier est donné, PHP essaiera de charger la bibliothèque d'extensions à partir du chemin par défaut de la bibliothèque d'extensions de votre système (sur les systèmes Linux, ce chemin est généralement spécifié par /etc/ld.so.conf ) . Si vous spécifiez un nom de fichier avec un chemin absolu, le chemin par défaut du système vers la bibliothèque d'extensions ne sera pas utilisé. Si vous spécifiez un nom de fichier avec un chemin relatif, PHP essaiera uniquement de charger l'extension relative au répertoire courant. |
-l |
Ce paramètre fournit un moyen pratique de vérifier la syntaxe du code PHP spécifié. En cas de succès, la chaîne Aucune erreur de syntaxe détectée dans 2334ac29606bf8a170583e4f7533b1f4 est écrite sur la sortie standard et la valeur de retour du shell est 0. En cas d'échec, Erreurs d'analyse 2334ac29606bf8a170583e4f7533b1f4 sera écrit sur la sortie standard avec le message d'erreur de l'analyseur interne, et la valeur de retour du shell sera définie sur 255. Ce paramètre ne pourra pas vérifier les erreurs fatales (telles que les fonctions non définies). Si vous souhaitez détecter les erreurs fatales, veuillez utiliser le paramètre -f.
|
-m |
En utilisant ce paramètre, PHP affichera le fichier intégré et chargé les modules PHP et Zend : $ php -m [Modules PHP] XML tokeniseur standard session posix PCRE surcharge mysql chaînemb typec [Modules Zend] |
-i | Ce paramètre de ligne de commande appellera la fonction phpinfo() et imprimera le résultat. Si PHP ne fonctionne pas correctement, nous vous recommandons d'exécuter la commande php -i pour voir s'il y a des messages d'erreur affichés avant le tableau d'informations ou à l'endroit correspondant. Veuillez noter que le contenu de sortie est au format HTML, les informations de sortie sont donc plus volumineuses. |
-r |
Utilisez ce paramètre pour exécuter le code PHP sur la ligne de commande. Vous n'avez pas besoin de plus les identifiants de début et de fin de PHP (ee04bbb39754204cd533973e7ad834b4 >), sinon cela provoquera des erreurs d'analyse syntaxique.
|
-h | En utilisant ce paramètre, vous pouvez obtenir la liste complète des paramètres de ligne de commande et Une brève description de ce que font ces paramètres. |
Le mode ligne de commande de PHP permet aux scripts PHP de s'exécuter de manière totalement indépendante du serveur WEB. Si vous utilisez un système Unix, vous devez ajouter une ligne de code spéciale au début de votre script PHP pour permettre son exécution, afin que le système sache quel programme utiliser pour exécuter le script. Sous la plateforme Windows, vous pouvez associer les attributs de double-clic des fichiers php.exe et .php, ou vous pouvez écrire un fichier batch pour exécuter le script en utilisant PHP. La première ligne de code ajoutée pour les systèmes Unix n'affectera pas l'exécution du script sous Windows, vous pouvez donc également utiliser cette méthode pour écrire des scripts multiplateformes. Ce qui suit est un exemple de programme simple en ligne de commande PHP.
Dans le programme ci-dessus, nous avons vérifié si le nombre de paramètres est supérieur à 1 ou inférieur à 1. Les paramètres immédiats sont --help, -help, -h ou -?, nous imprimons toujours les informations d'aide et dynamiquement Le nom du script de sortie. Si d'autres paramètres sont reçus, nous les affichons également. Si vous souhaitez exécuter le script ci-dessus sous Unix, vous devez en faire un script exécutable, puis exécutez simplement script.php echothis ou script.php -h. Sous Windows vous pouvez écrire un fichier batch pour cela :
|
Ce 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!