Saya mencoba membuat server web yang menyajikan skrip PHP. Saat ini, ia berfungsi sebagai berikut:
- Klien meminta /index.php?test=value
- Server memanggil
php index.php
- Server mengumpan header permintaan HTTP sebagai STDIN ke proses PHP
- Server membaca output
php
dari STDOUT dan mengembalikannya ke klien
Semua ini berfungsi kecuali bahwa parameter tidak diteruskan ke skrip PHP karena:
var_dump($_GET);
pengembalian:
array (0) {}
Bagaimana $_GET
parameter dilewatkan ke biner PHP ketika dipanggil?
Jawaban:
Biner PHP mana yang Anda gunakan? CLI atau CGI? Saya menduga Anda memerlukan versi CGI dari biner untuk PHP untuk menangani dengan benar menerima variabel lingkungan dan data POST jika Anda lulus itu.
The
php-cgi
biner mengimplementasikan antarmuka CGI, yang memungkinkan Anda untuk melewati parameter pada baris perintah:Yang berakhir pada
$_GET
:Anda mungkin ingin membaca tentang cara kerja CGI sehingga Anda dapat menerapkannya di server web Anda.
Ref: RFC3875
sumber
Menurut Wikipedia , jawabannya adalah mengatur
QUERY_STRING
variabel lingkungan:atau dalam langkah terpisah:
Ini berfungsi jika Anda menggunakan
php-cgi
perintah, karena ini adalah bagian dari spesifikasi CGI.php
Perintah biasa mengabaikan variabel ini, tetapi skrip Anda mungkin menggunakannya.sumber
Jika Anda lulus php script.php test = asdf
Jika Anda meneruskannya ke STDIN, Anda harus membaca STDIN dan mengurai header sendiri. REQUEST_URI akan berisi data yang Anda butuhkan, dan Anda bisa meneruskannya.
sumber
$_GET
seperti ketika PHP digunakan di bawah Apache./index.php?test=asdf;rm%20-rf%20/