dans un ajustement de désespoir, j'ai fait ce qui suit dans une coquille: p> ... et toujours non J'essaie de créer un petit serveur Web qui interface avec le php-cgi code> binaire. Cependant, les choses ne vont pas si bien. Le J'ai vérifié les en-têtes HTTP introduisés dans le Qu'est-ce qui pourrait conserver le binaire Je fais des progrès, j'ai creusé des choses de la code source PHP : p> / sapi / cgi / cgi_main .c : p>
(Je n'ai aucune idée de l'envoi de cette fonction.) p> Après avoir lu la réponse ci-dessous, j'ai essayé: P> $ _ POST CODE> Les variables se présentent dans la sortie de ceci: p>
php-cgi code> binaire correctement gère des demandes. Lorsqu'il s'agit de poster des demandes, le tableau
$ £ _ POST CODE> est vide, même lorsque les choses sont postées. P>
PHP -cgi code> binaire et ils incluent effectivement les données post et le type
type de contenu: application / x-www-form-urlencoded code> en-tête. p>
php-cgi code> de voir qu'il y a des données postales incluses dans la demande? p>
468: statique int sapi_cgi_read_post (char * tampon, uint comptage_bytes tsrmls_dc) code> p>
blockQuote> li>
ul>
NULL
3 Réponses :
Essayez de vérifier la variable $ http_raw_post_data. p>
http://php.net/manual/fr/Reserved.variables. HTTPRAWPOSTDATA.PHP P>
Il arrive comme null code>. Pourquoi est-ce que ça fait ça?
Parce que http_raw_post_data est une solution terrible - File_Get_Contents ("PHP: // Entrée") est meilleur, mais ne fonctionnera pas avec des données codées par MultiPart / Form-Data.
i enfin strong> le figuré: Apparemment la variable d'environnement Code> content_length Code> doit être défini. p> Ajout: p> < Pré> xxx pré> à mon exemple ci-dessus la fait fonctionner correctement! p> p>
Vous devez également définir probablement le type de contenu au minimum - fondamentalement, tout ce que vous essayiez de faire du tuyau dans STDIN dans votre version précédente du script de shell doit être défini comme une variable d'environnement avant la démarrage de la CGI. Oh, et vous devriez marquer cette réponse comme "acceptée" :)
@TML: true - j'ai ajouté "type de contenu" maintenant que cela fonctionne. Je ne peux pas accepter cela avant 24 heures après que je le pose. (IIRC)
Vous avez mentionné que votre système est bien compris. La longueur du contenu doit uniquement être définie pour les messages p>
aussi cela pourrait aider, c'est la spécification CGI / 1.1. Il montre les variables d'environnement doivent être définies: p>
http://graphcomp.com/info/specs/cgi11.html et Ce lib.ru/webmaster/cgi1_1Spec/interface.html p>
Quelles étaient les variables d'environnement minimum dont vous aviez besoin pour obtenir des demandes de travail? p>
Script_filename, demande_method et redirect_status.
Redirect_Status n'est pas requis si vous avez cgi.force_redirect = 0 dans votre php.ini. J'ai essayé d'ajouter ça et script_filename et il ne fonctionnera toujours pas
Content_type pour moi, PHP 7.0.16
Il est temps de choisir la source PHP: p
Je n'ai pas de réponse, mais les données postales devraient entrer via STDIN.
Votre serveur Web met-elle correctement implémenter la spécification CGI 1.1?
@joschi: Je crois que ... plus cela fonctionne bien pour obtenir des demandes, donc je suppose que c'est autre chose.