Maison  >  Article  >  développement back-end  >  Exemple d'exécution de ligne de commande PHP

Exemple d'exécution de ligne de commande PHP

小云云
小云云original
2018-03-14 11:21:263614parcourir

Cet article partage principalement avec vous les paramètres d'option du mode ligne de commande suivants fournis par le fichier binaire PHP (c'est-à-dire le programme php.exe). Vous pouvez interroger ces paramètres à tout moment via la commande PHP -h.

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

Le module CLI SAPI propose les trois méthodes différentes suivantes pour obtenir le code PHP que vous souhaitez exécuter :

Dans l'environnement Windows, essayez d'utiliser des guillemets doubles, et sous Linux environnement, essayez d'utiliser des guillemets doubles. Utilisez des guillemets simples pour terminer.

Laissez PHP exécuter le fichier spécifié.

php my_script.php 
php -f  "my_script.php"

Les deux méthodes ci-dessus (avec ou sans le paramètre -f) peuvent exécuter le fichier my_script.php donné. Vous pouvez choisir n'importe quel fichier à exécuter. Les scripts PHP que vous spécifiez n'ont pas besoin d'avoir une extension .php. Ils peuvent avoir n'importe quel nom de fichier et n'importe quelle extension.

Exécutez le code PHP directement depuis la ligne de commande.

php -r "print_r(get_defined_constants());"

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 marqueurs de début et de fin lors de l'exécution du code ! Avec le paramètre -r, ces marqueurs sont inutiles et provoqueront des erreurs 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 php | | sort -u >final_output.txt

Les trois méthodes ci-dessus pour exécuter du code ne peuvent pas être utilisées en même temps.

Comme toutes les applications shell, le binaire PHP (fichier php.exe) et le script PHP qu'il exécute peuvent accepter une série de paramètres. PHP n'a aucune limite sur le nombre d'arguments transmis à un script (le shell a une limite sur le nombre de caractères sur la ligne de commande, mais vous ne dépasserez généralement pas cette limite). Les arguments passés à votre script sont disponibles dans la variable globale $argv . Le membre indexé zéro de ce tableau est le nom du script (lorsque le code PHP provient d'une entrée standard et est exécuté directement depuis la ligne de commande avec le paramètre -r, le nom est "-"). De plus, la variable globale $argc stocke le nombre de variables membres dans le tableau $argv (et non le nombre de paramètres transmis au programme de script).

Tant que les paramètres que vous transmettez à votre script ne commencent pas par un symbole -, vous n'avez pas besoin de prêter trop attention à quoi que ce soit. Passer des paramètres commençant par - à votre script provoquera une erreur car PHP pensera qu'il doit gérer lui-même ces paramètres. Vous pouvez utiliser le séparateur de liste de paramètres pour résoudre ce problème. Une fois que PHP a analysé les paramètres, tous les paramètres après ce symbole seront transmis tels quels à votre script.

# 以下命令将不会运行 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"
}

En plus de cela, nous avons une autre façon d'utiliser PHP pour les scripts shell. Vous pouvez écrire un script et commencer la première ligne avec #!/usr/bin/php, suivi du code PHP normal avec des balises de début et de fin PHP, puis configurer l'exécution correcte de la propriété de fichier. Cette méthode permet au fichier d'être exécuté directement comme un script shell ou un script PERL.

#!/usr/bin/php
<?php
    var_dump($argv);
?>

En supposant que le fichier soit renommé test et placé dans le répertoire courant, nous pouvons faire ce qui suit :

$ 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, après avoir entré le script lors du passage paramètres commençant par - , le script s'exécute toujours normalement.

------------------------------------------------------ ------ ----------------------------------Options de commande-------- ------ -------------------------------------------- -

Formulaire 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, en générer une version HTML surlignée et écrire le résultat sur la sortie standard. Veuillez noter que ce processus ne fait que générer un bloc de balises HTML de [...] et ne contient aucun en-tête HTML.

Remarque : Cette option ne peut pas être utilisée avec le paramètre -r.

-w

Affichez le code source avec les commentaires et les espaces supprimés.

Remarque : Cette option ne peut pas être utilisée avec le paramètre -r.

-f

Analysez et exécutez le nom de fichier donné. Ce paramètre est facultatif et peut être omis. 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 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies

-c

En utilisant ce paramètre, vous pouvez spécifier un répertoire dans lequel le fichier php.ini est placé, ou spécifier directement un fichier INI personnalisé dont le nom de fichier n'a pas besoin d'être php.ini. Par exemple :

$ php -c /custom/directory/ mon_script.php $ php -c /custom/directory/custom-file.ini mon_script.php

-a

Exécutez PHP de manière interactive.

-d

Utilisez ce paramètre pour définir la valeur de la variable dans le fichier php.ini La syntaxe est :

-d configuration_directive. [ =value]

Exemple :

# L'omission de 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);' string(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"); foo );' string(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"); ) ;' string(2) "20" $ php -d max_execution_time=doesntmakesense -r '$foo = ini_get("max_execution_time"); var_dump($foo);' - 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 un nom de fichier est spécifié avec un chemin relatif, PHP tentera 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 est écrite sur la sortie standard et le shell renvoie la valeur 0. En cas d'échec, les erreurs d'analyse seront écrites sur la sortie standard avec les messages d'erreur de l'analyseur interne et la valeur de retour du shell sera définie sur 255.

Ce paramètre ne détectera pas les erreurs fatales (telles que les fonctions non définies). Si vous souhaitez détecter les erreurs fatales, veuillez utiliser le paramètre -f.

Remarque : Ce paramètre ne peut pas être utilisé avec -r.

-m

En utilisant ce paramètre, PHP affichera les modules PHP et Zend intégrés et chargés :

$ php -m [ Modules PHP] xml tokenizer session standard posix pcre surcharge mysql mbstring ctype [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 ou à l'endroit correspondant du tableau d'informations. 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 du code PHP sur la ligne de commande. Vous n'avez pas besoin d'ajouter les identifiants de début et de fin PHP (), sinon cela provoquerait des erreurs d'analyse de syntaxe.

Remarque : lors de l'utilisation de cette forme de PHP, des précautions particulières doivent être prises pour éviter les conflits avec les substitutions de paramètres de ligne de commande effectuées par l'environnement shell.

Exemple illustrant les erreurs d'analyse syntaxique

$ php -r "$foo = get_defined_constants();" Code de ligne de commande (1) : Erreur d'analyse - erreur d'analyse, inattendue '='

Le problème ici est que même si des guillemets doubles " sont utilisés, sh/bash implémente toujours la substitution de paramètres. Puisque $foo n'est pas défini, après avoir été remplacé, sa position devient un caractère nul, donc au moment de l'exécution, il est en fait lu par PHP. le code pris est :

$ php -r " = get_defined_constants();"

La méthode correcte consiste à utiliser des guillemets simples 'Dans une chaîne entre guillemets simples, les variables ne seront pas utilisées. . Restauré à sa valeur d'origine par sh/bash

$ php -r '$foo = get_defined_constants(); var_dump($foo);' { ["E_ERROR"]=> 1) ["E_WARNING"]=> int(2) ["E_PARSE"]=> int(4) ["E_NOTICE"]=> ]

Si vous utilisez un shell autre que sh/bash, vous pouvez rencontrer d'autres problèmes. Veuillez signaler tout bug que vous rencontrez ou envoyer un e-mail à phpdoc@lists.php.net 🎜>Vous pouvez également. rencontrez divers problèmes lorsque vous essayez d'introduire les variables d'environnement du shell dans le cheval ou d'utiliser des barres obliques inverses pour échapper des caractères. Veuillez faire attention lorsque vous l'utilisez

Remarque : - r Valide en CLI SAPI, invalide en CGI SAPI <.>

-h En utilisant ce paramètre, vous pouvez obtenir une liste complète des paramètres de ligne de commande et une brève description des fonctions de ces paramètres 🎜>

Le mode ligne de commande de PHP autorise les scripts PHP. pour s'exécuter complètement indépendamment 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 afin qu'il puisse être exécuté afin que le système sache quel programme utiliser. exécuter le script. Sur les plates-formes 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 avec PHP. n'affecte 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.

Exemple 23-1. Script PHP (script.php) essayant d'être exécuté à partir de la ligne de commande

#!/usr/bin/phpIl s'agit d'un script PHP en ligne de commande avec une option. peut être un mot que vous souhaitez imprimer avec les options --help, -h ou -? vous pouvez obtenir cette aide.

Dans le script ci-dessus, nous utilisons la première ligne de code spécial pour indiquer que le fichier doit être écrit par PHP pour être exécuté. Nous utilisons ici la version CLI, donc aucun en-tête HTTP ne sera généré. Lorsque vous écrivez des applications en ligne de commande en PHP, vous pouvez utiliser deux paramètres : $argc et $argv. La valeur de la précédente est un nombre entier supérieur au nombre de paramètres (le nom du script en cours d'exécution est également considéré comme un paramètre). Le second contient un tableau de paramètres dont le premier élément est le nom du script et l'indice est le nombre 0 ($argv[0]).

Dans le programme ci-dessus, nous avons vérifié si le nombre de paramètres est supérieur à 1 ou inférieur à 1. Même si le paramètre est --help, -help, -h ou -?, nous imprimons toujours les informations d'aide et affichons dynamiquement le nom du script en même temps. 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 le rendre exécutable puis exécuter simplement script.php echothis ou script.php -h. Sous Windows, vous pouvez écrire un fichier batch pour cela :

@c:phpcliphp.exe script.php %1 %2 %3 %4

Recommandations associées :

Explication détaillée de l'exécution de la ligne de commande PHP

PHP appelle la ligne de commande Linux pour exécuter la compression de fichiers command_PHP tutoriel

Sur l'exécution de la ligne de commande PHP

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn