J'essaie de créer un serveur Web qui sert des scripts PHP. Actuellement, cela fonctionne comme suit:
- Le client demande /index.php?test=value
- Le serveur invoque
php index.php
- Le serveur alimente les en-têtes de requête HTTP en STDIN vers le processus PHP
- Le serveur lit la sortie de
php
STDOUT et la renvoie au client
Tout cela fonctionne, sauf que les paramètres ne sont pas transmis au script PHP car:
var_dump($_GET);
Retour:
tableau (0) {}
Comment les $_GET
paramètres sont-ils transmis au binaire PHP lorsqu'il est invoqué?
Réponses:
Quel binaire PHP utilisez-vous? La CLI ou CGI? Je soupçonne que vous avez besoin d'une version CGI du binaire pour PHP pour gérer correctement accepter les variables d'environnement et les données POST si vous passez cela.
Le
php-cgi
binaire implémente l'interface CGI, qui vous permet de passer des paramètres sur la ligne de commande:Qui finissent par
$_GET
:Vous voudrez peut-être en savoir plus sur le fonctionnement de CGI afin de pouvoir l'implémenter dans votre serveur Web.
Réf: RFC3875
la source
Selon Wikipedia , la réponse est de définir la
QUERY_STRING
variable d'environnement:ou en plusieurs étapes:
Cela fonctionne si vous utilisez la
php-cgi
commande, car elle fait partie de la spécification CGI. Laphp
commande ordinaire ignore cette variable, mais votre script peut l'utiliser.la source
Si vous passez php script.php test = asdf
Si vous le transmettez à STDIN, vous devrez lire STDIN et analyser les en-têtes vous-même. REQUEST_URI contiendrait les données dont vous avez besoin, et vous pourriez les transmettre.
la source
$_GET
comme elles le sont lorsque PHP est utilisé sous Apache./index.php?test=asdf;rm%20-rf%20/