Comment passer des paramètres de chaîne de requête pour le PHP?
Je suis en train d'élaborer un serveur web qui appelle l'exécutable PHP (via CGI) pour le traitement d'un script.
Voici le problème:
Le script PHP n'est pas de ramasser les paramètres de ligne de commande. Par exemple, si le client le demande path/to/file.php?test=value
, le $_GET
tableau est vide.
J'ai essayé de passer les paramètres dans une variable d'environnement (QUERY_STRING
), mais encore, ils ne se présentent pas.
Comment puis-je passer des paramètres de chaîne de requête pour une application PHP?
OriginalL'auteur Nathan Osman | 2010-10-03
Vous devez vous connecter pour publier un commentaire.
Il existe différents SAPIs pour PHP. L'un d'eux est le cli SAPI qui, apparemment, est ce que vous êtes en utilisant le cli SAPI ne pas remplir $_GET, $_POST ... parce que c'est pour un script en ligne de commande.
Dans votre cas, vous avez besoin de PHP en mode cgi SAPI. (par exemple, Vous devez remplacer
php
avecphp-cgi
[1] dans votre arborescence)[1] Dans la plupart des distribuitons il est appelé
php-cgi
, si vous compilez PHP vous-même, vous devez activer cgi.quand vous n'avez pas de php-cgi, mais souhaitez simuler l'appel de php dans un contexte cgi que faites-vous alors?
Pour l'énoncer, vous feriez exécuter
php-cgi file.php a=1 b=2
.OriginalL'auteur racetrack
Tu parles ligne de commande paramètres ou $_GET paramètres? Ceux ne sont pas les mêmes.
Lors de l'utilisation d'un navigateur web,
$_GET
est utilisé. Mais si vous êtes de passage d'arguments de ligne de commande comme/path/to/file.php arg1 arg2
, alors vous devez utiliser$argv
(et$argc
contient la longueur des éléments).$argv[0]
contient toujours le exécutant le fichier, dans cet exemple/path/to/file.php
.$argv[1]
estarg1
dans ce cas et$argv[2]
estarg2
. Donc$argc
contiennent 3.Ressources utiles:
OriginalL'auteur Lekensteyn
Comme mentionné dans Ne m'appelez pas DOM » Test de scripts CGI avec QUERY_STRING, en PHP, vous pourriez avoir à utiliser
parse_str
pour analyser les variables d'environnement transmises via l'interface cli - exemple dans le terminal Linux:OriginalL'auteur sdaau
- Option 1: php-cgi --
Utiliser "php-cgi' au lieu de 'php' à l'exécution de votre script. C'est la façon la plus simple que vous n'aurez pas besoin de spécialement modifier votre code php pour travailler avec elle:
- Option 2: si vous avez un serveur web --
Si le fichier php sur un serveur web que vous pouvez utiliser 'wget' sur la ligne de commande:
OU:
-- Accéder à des variables en php --
Dans les options 1 & 2, vous accéder à ces paramètres, comme ceci:
OriginalL'auteur Bastion