$ _GET değişkenlerini komut satırı üzerinden bir PHP betiğine nasıl aktarabilirim?


14

PHP komut dosyaları sunan bir web sunucusu oluşturmaya çalışıyorum. Şu anda, aşağıdaki gibi çalışır:

  1. Müşteri /index.php?test=value ister
  2. Sunucu çağırır php index.php
  3. Sunucu PHP işlemine HTTP istek başlıklarını STDIN olarak besler
  4. Sunucu phpSTDOUT'tan çıktısını okur ve istemciye döndürür

Parametrelerin PHP betiğine geçirilmemesi dışında tüm bunlar çalışıyor:

var_dump($_GET);

İadeler:

dizi (0) {}

$_GETParametreler çağrıldığında PHP ikilisine nasıl aktarılır?


Hangi web sunucusu? Web sunucusunu nasıl yapılandırdınız? PHP'yi nasıl yapılandırdınız?
joschi

@jos: Bu JetHTTP - kendim yazdım.
Nathan Osman

Yanıtlar:


29

Hangi PHP ikili dosyasını kullanıyorsunuz? CLI veya CGI? Eğer PHP, ortam değişkenleri ve POST verileri kabul eğer düzgün işlemek için ikili CGI sürümüne şüpheli .

php-cgiİkili uygular komut satırında parametre geçmesine izin verir CGI arayüzü,:

php-cgi -f index.php left=1058 right=1067 class=A language=English

Hangi sonuçlanır $_GET:

Array
(
    [left] => 1058
    [right] => 1067
    [class] => A
    [language] => English
)

Web sunucunuza uygulamak için CGI'nin nasıl çalıştığını okumak isteyebilirsiniz .

Referans: RFC3875


Evet ... yeterince eminim. Sorun buydu.
Nathan Osman

3

Wikipedia'ya göre , cevap QUERY_STRINGortam değişkenini ayarlamaktır :

QUERY_STRING='user=foo&pass=bar&left=1234' php-cgi index.php

veya ayrı adımlarla:

export QUERY_STRING='user=foo&pass=bar&left=1234'
php-cgi index.php

php-cgiKomutu kullanırsanız çalışır , çünkü bu CGI belirtiminin bir parçasıdır. Sıradan phpkomut bu değişkeni yok sayar, ancak komut dosyanız bunu kullanabilir.


1

Eğer php script.php testini geçerseniz = asdf

$result = parse_args($argv,$argc,$help);
print_r($result);

Eğer STDIN'a geçiyorsanız, STDIN'i okumanız ve başlıkları kendiniz ayrıştırmanız gerekir. REQUEST_URI, ihtiyacınız olan verileri içerir ve bunu iletebilirsiniz.


$_GETPHP Apache altında kullanıldığında olduğu gibi mevcut değişkenler gerekir .
Nathan Osman

Birisi ziyaret edene kadar iyi ve iyi/index.php?test=asdf;rm%20-rf%20/
danlefree

@dan: Endişelenme, web sunucum bunu başarabilecek kadar akıllı.
Nathan Osman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.