Как передать переменные GET в php-файл с помощью Shell?

Возможный дубликат:
PHP, передающий $ _GET в командной строке linux

Я хочу выполнить php-файл с помощью скрипта оболочки, но я не знаю, как я могу передавать переменные GET.

Этот скрипт «php script.php? Var = data» не работает, потому что Shell не может найти файл «script.php? Var = data».

Итак, вы знаете, как я могу передавать свои переменные? Если действительно невозможно использовать переменную GET, могу ли я передать переменные другим способом и использовать ее в моем php-скрипте?

Если вы выполняете свой скрипт через командную строку (например, php your_script.php ), вы не сможете использовать параметры $_GET , как вы это переживаете.

Тем не менее, вы можете использовать CLI PHP, который любезно дает вам массив $argv .

Чтобы использовать его, вы вызываете свой скрипт следующим образом:

 php your_script.php variable1 "variable #2" 

Внутри вашего скрипта вы можете получить доступ к переменным с помощью:

 <?php $variable1 = $argv[1]; $variable2 = $argv[2]; ?> 

Моя идея заключалась бы в написании своего рода скрипта-обертки для подачи в / usr / bin / php и предоставления строки аргументов для захвата данных. Не ошибитесь, это взлом и, вероятно, не очень хороший, но он должен выполнить свою работу.

 <?php /** Wrapper.php ** ** Description: Adds the $_GET hash to a shell-ran PHP script ** ** Usage: $ php Wrapper.php <yourscript.php> arg1=val1 arg2=val2 ... **/ //Grab the filenames from the argument list $scriptWrapperFilename = array_shift($argv); // argv[0] $scriptToRunFilename = array_shift($argv); // argv[1] // Set some restrictions if (php_sapi_name() !== "cli") die(" * This should only be ran from the shell prompt!\n"); // define the $_GET hash in global scope $_GET; // walk the rest and pack the $_GET hash foreach ($argv as $arg) { // drop the argument if it's not a key/val pair if(strpos($arg, "=") === false) continue; list($key, $value) = split("=", $arg); // pack the $_GET variable $_GET[$key] = $arg; } // get and require the PHP file we're trying to run if (is_file($scriptToRunFilename)) require_once $scriptToRunFilename; else die(" * Could not open `$scriptToRunFilename' for inclusion.\n"); ?> 

PHP CLI принимает переменные в структуре команд, например:

 php woop.php --path=/home/meow/cat.avi 

Затем вы можете использовать что-то вроде http://php.net/manual/en/function.getopt.php, чтобы получить такой вариант в своем PHP-скрипте:

 getopt('path') 

Или вы можете получить их прямо из argv .

В качестве альтернативы, как @GBD говорит, что вы можете использовать скрипт bash для создания страницы своего сайта.