Thông thường, để truyền đối số cho tập lệnh dòng lệnh, bạn sẽ sử dụng argv
biến toàn cục hoặc getopt :
// bash command:
// php -e myscript.php hello
echo $argv[1]; // prints hello
// bash command:
// php -e myscript.php -f=world
$opts = getopt('f:');
echo $opts['f']; // prints world
$ _GET đề cập đến các tham số phương thức HTTP GET, không có sẵn trong dòng lệnh, vì chúng yêu cầu một máy chủ web để cư trú.
Nếu bạn thực sự muốn cư trú $ _GET, bạn có thể làm điều này:
// bash command:
// export QUERY_STRING="var=value&arg=value" ; php -e myscript.php
parse_str($_SERVER['QUERY_STRING'], $_GET);
print_r($_GET);
/* outputs:
Array(
[var] => value
[arg] => value
)
*/
Bạn cũng có thể thực thi một tập lệnh đã cho, điền $_GET
từ dòng lệnh mà không phải sửa đổi tập lệnh đã nói:
export QUERY_STRING="var=value&arg=value" ; \
php -e -r 'parse_str($_SERVER["QUERY_STRING"], $_GET); include "index.php";'
Lưu ý rằng bạn có thể làm tương tự với $_POST
và $_COOKIE
là tốt.
php [script name] "a=1&b=2&c=3"
sẽ không được thực hiện$_SERVER['QUERY_STRING']
, nhưng bạn có thể dễ dàng ảnh hưởng đến điều tương tự bằng cách tham khảo$_SERVER['argv'][1]
.