2011-07-21 10 views
19

Zrobiłem skrypt bash, który uruchamia skrypt php. To działa dobrze bez parametrów, ale kiedy dodać parametry (ID oraz adres URL), istnieją pewne błędy:Jak przekazać parametry z basha do skryptu php?

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 

uruchomić skrypt php z bash tak:

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

Odpowiedz

26

Nazwij to jak:

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

również zmodyfikować skrypt PHP do korzystania parse_str():

parse_str($argv[1]); 

Jeśli indeks $_SERVER['REMOTE_ADDR'] nie jest ustawiony.


Bardziej zaawansowane postępowanie może potrzebować getopt(), ale parse_str() jest sposobem quick'n'dirty aby uzyskać jego pracy.

+0

Yep! dziękuję Tino – user420574

+0

Jak byś przekazał katalog do skryptu php? – Michael

+1

@Michael, w ten sam sposób, po prostu odczytaj go z tablicy '$ argv'. Poza tym nekromancja nici jest zła. –

6

Nie można przekazywać parametrów zapytań GET do interfejsu wiersza poleceń PHP. Przepuść argumenty jako standardowe argumenty linii poleceń i użyj $argc and $argv globals do ich odczytania lub (jeśli musisz użyć parametrów GET/POST) wywołaj skrypt przez curl/wget i przekazuj parametry w ten sposób - zakładając, że masz dostęp do skryptu przez lokalny serwer sieciowy.

ten sposób można przekazywać argumenty do odczytania przez $argc i (The - sygnalizuje, że wszystkie kolejne argumenty powinny przejść do skryptu, a nie do binarnego PHP tłumacza):

php myfile.php -- argument1 argument2

+1

Możesz przekazać parametry zapytania GET, jeśli używasz php-cgi :) Zobacz przykłady tutaj: https://serverfault.com/questions/187025/how-to-pass-get-variables-to-a-php-script- via-the-command-line – Bastion

+0

@Bastion magiczny link, dzięki! – icc97

4

- Opcja 1: php-cgi -

Użyj "php-cgi" zamiast "php", aby uruchomić skrypt. Jest to najprostszy sposób, jak nie będzie trzeba specjalnie modyfikować kodu php z nim pracować:

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

- Opcja 2: jeśli masz serwer WWW -

Jeśli plik PHP na serwerze WWW można użyć 'wget' w wierszu poleceń:

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

czyli

wget -q -O - "http://localhost/my/script/file.php?id=19&myvar=xyz" 

- Dostęp do zmiennych w php -

W obu opcji 1 & 2 Dostęp do tych parametrów tak:

$id = $_GET["id"]; 
$myvar = $_GET["myvar"]; 
Powiązane problemy