2011-07-21 9 views
19

php komut dosyasını çalıştıran bir bash betiği yaptım. Bu parametre olmadan çalışıyor ama parametreleri (id ve URL) eklediğinizde, bazı hatalar vardır:Parametreler bash'den php komut dosyasına nasıl iletilir?

PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf                      .d/mcrypt.ini on line 1 in Unknown on line 0 
Could not open input file: /var/www/dev/dbinsert/script/automatisation.php?                      id=1 

böyle bash php komut dosyasını çalıştırın:

php /var/www/dev/dbinsert/script/automatisation.php?id=19&url=http://bkjbezjnkelnkz.com 

cevap

26

olarak Çağrı:

php /path/to/script/script.php -- 'id=19&url=http://bkjbezjnkelnkz.com' 

Ayrıca kullanmak PHP komut dosyası değiştirmek parse_str():

parse_str($argv[1]); 

$_SERVER['REMOTE_ADDR'] dizini ayarlanmamışsa.


Daha gelişmiş taşıma getopt() gerekebilir, ancak parse_str() çalışma bunu elde etmek bir quick'n'dirty yoludur.

+0

Yep! Teşekkürler Tino – user420574

+0

Bir dizini php komut dosyasına nasıl iletirsiniz? – Michael

+1

@Michael, aynı şekilde, sadece $ argv' dizisinden oku. Ayrıca, iplik necromancy kötüdür. –

6

GET sorgu parametrelerini PHP komut satırı arabirimine geçiremezsiniz. Argümanları standart komut satırı argümanları olarak iletin ve bunları okumak için $argc and $argv globals kullanın ya da (GET/POST parametrelerini kullanmanız gerekiyorsa) komut dosyasını curl/wget ile çağırın ve parametreleri bu şekilde iletin. yerel web sunucusu.

Bu

Eğer $argc ve tarafından okunacak argümanlar iletebilirsiniz nasıl (- sonraki tüm argümanlar PHP yorumlayıcı ikili komut gidip gerektiğini gösterir):

php myfile.php -- argument1 argument2

+1

Eğer php-cgi kullanırsanız GET sorgu parametrelerini geçebilirsiniz :) Örneklere bakın: https://serverfault.com/questions/187025/how-to-pass-get-variables-to-a-php-script- komut satırı aracılığıyla – Bastion

+0

@Bastion magic link, teşekkürler! – icc97

4

- Seçenek 1: php-cgi -

'php' yerine 'php-cgi' komut dosyasını çalıştırmak için kullanın.

php-cgi -f /my/script/file.php id=19 myvar=xyz 

- 2. Seçenek: Bu onunla çalışmak için özel olarak php kodunu değiştirmek gerekmez olarak basit yoldur -

Eğer bir web sunucusu varsa

wget 'http://localhost/my/script/file.php?id=19&myvar=xyz' 

YA:

wget -q -O - "http://localhost/my/script/file.php?id=19&myvar=xyz" 
php dosyası komut satırında 'wget' kullanabilirsiniz bir web sunucusu üzerinde

- php değişkenleri erişme -

böyle bu parametreleri erişmek 1 & 2 hem seçenekte:

$id = $_GET["id"]; 
$myvar = $_GET["myvar"];