7
votes

$ _BET et $ _Post variables n'existent pas lors de l'utilisation du serveur Web Lightpd

J'ai installé le serveur Web Lightpd sur mon ordinateur Windows et j'ai un problème: dans PHP Files No $ _ Get code> et $ _ POST code> Les variables sont définies.

Par exemple J'ai ce script simple ( tmp.php code>): p> xxx pré>

Quand je vais à l'adresse suivante: http: // localhost / TMP .php? x = 123 code> p>

i Obtenir ce message d'erreur: P>

Array (
 [SERVER_SOFTWARE] => lighttpd/1.4.20
 [SERVER_NAME] => localhost
 [GATEWAY_INTERFACE] => CGI/1.1
 [SERVER_PROTOCOL] => HTTP/1.1
 [SERVER_PORT] => 80
 [SERVER_ADDR] => 0.0.0.0
 [REQUEST_METHOD] => GET
 [REDIRECT_STATUS] => 200
 [QUERY_STRING] => x=123
 [REQUEST_URI] => /tmp.php?x=123
 [REMOTE_ADDR] => 127.0.0.1
 [REMOTE_PORT] => 3150
 [CONTENT_LENGTH] => 0
 [SCRIPT_FILENAME] => /srv/www/htdocs/tmp.php
 [SCRIPT_NAME] => /srv/www/htdocs/tmp.php
 [DOCUMENT_ROOT] =>
 [SYSTEMROOT] => C:\WINNT
 [HTTP_ACCEPT] => */*
 [HTTP_ACCEPT_LANGUAGE] => en-gb
 [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)
 [HTTP_ACCEPT_ENCODING] => gzip, deflate
 [HTTP_HOST] => localhost
 [HTTP_CONNECTION] => Keep-Alive
 [WINDIR] => C:\WINNT
 [PHP_SELF] => /srv/www/htdocs/tmp.php
 [PATH_TRANSLATED] => /srv/www/htdocs/tmp.php
 [REQUEST_TIME] => 1328287189
 [argv] => Array (
 [0] => /srv/www/htdocs/tmp.php )
 [argc] => 1 
)


13 commentaires

L'avis dit que l'index non défini est «A», pas «X». Êtes-vous sûr que le code est le même?


Oui, c'est x ou toute autre variable que vous définissez. $ _GET et $ _Post Les tableaux n'existent pas du tout.


Est-ce correctement mis en place? Qu'est-ce que print_r ($ _ serveur); disent pour obtenir des demandes?


Peut-être essayer $ _Request, $ _p, $ _g .. Essayez également un var_dump ($ _ serveur); pour voir si la chaîne de requête apparaît parmi les variables


Désolé, je ne pouvais pas la poster ici, alors s'il vous plaît voir mon message original pour la sortie Print_R ($ _ Server). Il montre X = 123, mais je ne sais pas comment l'obtenir.


Lorsque je mets dans le code: echo $ _Server ['Query_string']; Je reçois la sortie: x = 123. Devrais-je maintenant modifier tous mes scripts PHP ou une méthode pour traduire en quelque sorte $ _Server ['Query_string'] à $ _GET?


@Mario Personne n'a encore fourni une réponse ...


@AndreyRubliov utilisez-vous CGI ou FastCGI entre LightPD et PHP? À quoi ressemble votre fichier LightPD.conf?


À mon avis, cela devrait être sur Serverfault.


@Mario: J'espère que ce n'était pas sérieux: cela peut être un problème de mauvaise configuration de serveur, cela devrait donc être résolu en premier, l'OP ne devrait pas utiliser de tels "hacks".


@Andreyrubliov: Vous devez partager plus d'informations sur la configuration de votre serveur, la version PHP, etc. ... David Souther La question précédente est également bonne. Cela doit être une mauvaise configuration de serveur.


Qu'est-ce que dans var_dump (Demande $ _) ?


Au cas où rien d'autre aide: getluky.net/2009/02/24/...


3 Réponses :


1
votes

Selon les documents, ce pourrait être causé par le paramètre php.ini variables_order .

La valeur par défaut est EGPCS , mais si elle a été modifiée d'une manière ou d'une autre et ne contenait pas la lettre G, obtenir des variables serait complètement ignorée et $ _ get serait vide.


2 commentaires

Merci, mais dans ma php.ini, il est défini sur: variables_order = "EGPFCS" alors semble ok?


Je ne trouve aucune documentation pour la lettre f, mais dans mon environnement de test EGPFCS remplit toujours $ _ obtenir , alors j'imagine que ce n'est pas votre problème.



2
votes

Tout d'abord permet de ne pas manquer quelque chose. strong>

Essayez ceci p> xxx pré>

Essayez $ _Post fort> p>

FORMER UN FORME HTML simple et essayez de le poster. p>

<?php
    // test2.php
    print_r($_POST);
?>
<form method="POST">
    <input type="text" name="myvar" />
    <input type="submit""/>
</form>


2 commentaires

Je n'utilise pas la réécriture et j'ai vide $ _GET. Le premier test que vous suggérez de me donner aucune sortie.


Une fois que j'ajoute les demi-couches manquantes, je reçois: Get: Array () http_get_vars:



0
votes

Bien que je vois la longueur du contenu est zéro, il ne devrait pas être "zéro". Installez Fiddler et recherchez l'en-tête Envoyer pendant la demande et vérifiez l'en-tête de réponse. Il semble que l'en-tête soit en train de gâcher.

considère


0 commentaires