Biasanya, untuk meneruskan argumen ke skrip baris perintah, Anda akan menggunakan argv
variabel global atau 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 merujuk ke parameter metode HTTP GET, yang tidak tersedia di baris perintah, karena mereka membutuhkan server web untuk diisi.
Jika Anda benar-benar ingin mengisi $ _GET, Anda dapat melakukan ini:
// 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
)
*/
Anda juga dapat menjalankan skrip yang diberikan, mengisi $_GET
dari baris perintah, tanpa harus mengubah skrip tersebut:
export QUERY_STRING="var=value&arg=value" ; \
php -e -r 'parse_str($_SERVER["QUERY_STRING"], $_GET); include "index.php";'
Perhatikan bahwa Anda dapat melakukan hal yang sama dengan $_POST
dan $_COOKIE
juga.
php [script name] "a=1&b=2&c=3"
tidak akan mengisi$_SERVER['QUERY_STRING']
, tetapi Anda dapat dengan mudah mempengaruhi hal yang sama dengan merujuk$_SERVER['argv'][1]
.getopt()
, ini memberi tahu PHP bahwa Anda menginginkan argumenf
, bukan opsif
(yang akan ditentukan dikurangi titik dua). Jadi itu hanya sintaks.Dari jawaban ini di ServerFault :
Gunakan
php-cgi
biner alih-alih adilphp
, dan berikan argumen pada baris perintah, seperti ini:Yang menempatkan ini dalam
$_GET
:Anda juga dapat mengatur variabel lingkungan yang akan ditetapkan oleh server web, seperti ini:
sumber
<b>Notice</b>: Undefined index: testing in <b> ... </b><br />
php-cgi -f /var/www/vhosts/example.com/public_html/index.php action=DoSomething
Bekerja Baik ..Saya tidak memiliki biner php-cgi di Ubuntu, jadi saya melakukan ini:
sumber
Terkadang Anda tidak memiliki opsi untuk mengedit file php untuk menetapkan $ _GET ke parameter yang diteruskan, dan kadang-kadang Anda tidak bisa atau tidak ingin menginstal php-cgi.
Saya menemukan ini menjadi solusi terbaik untuk kasus itu:
Ini menghindari mengubah file php Anda dan memungkinkan Anda menggunakan perintah php biasa. Jika Anda telah menginstal php-cgi, tentu saja gunakan itu, tetapi ini adalah hal terbaik berikutnya. Pikir opsi ini layak disebutkan
-r berarti menjalankan kode php dalam string berikut. Anda menetapkan nilai $ _GET secara manual di sana, dan kemudian merujuk file yang ingin Anda jalankan.
Perlu dicatat bahwa Anda harus menjalankan ini di folder kanan, sering tetapi tidak selalu folder di mana file php berada. Membutuhkan pernyataan akan menggunakan lokasi perintah Anda untuk menyelesaikan url relatif, BUKAN lokasi file
sumber
Kemudian atur
$_GET
variabel Anda di baris pertama Anda di PHP, meskipun ini bukan cara yang diinginkan untuk mengatur$_GET
variabel dan Anda mungkin mengalami masalah tergantung pada apa yang Anda lakukan nanti dengan variabel itu.variabel yang Anda luncurkan skrip akan dapat diakses dari
$argv
array di aplikasi PHP Anda. entri pertama adalah nama skrip asal mereka, jadi Anda mungkin ingin melakukanarray_shift($argv)
untuk menghapus entri pertama itu jika Anda ingin memproses banyak variabel. Atau hanya memuat ke variabel lokal.sumber
Coba gunakan
WGET
:sumber
$_GET
menyiratkan server web yang berjalan.- Opsi 1: php-cgi -
Gunakan 'php-cgi' sebagai pengganti 'php' untuk menjalankan skrip Anda. Ini adalah cara paling sederhana karena Anda tidak perlu memodifikasi kode php khusus untuk bekerja dengannya:
- Opsi 2: jika Anda memiliki server web -
Jika file php ada di server web, Anda dapat menggunakan 'wget' di baris perintah:
ATAU:
- Mengakses variabel dalam php -
Di kedua opsi 1 & 2 Anda mengakses parameter ini seperti ini:
sumber
Jika Anda harus lulus
$_GET
,$_REQUEST
,$_POST
, atau apa pun yang Anda bisa juga menggunakan modus interaktif PHP:Kemudian ketik:
Ini akan secara manual mengatur variabel yang Anda inginkan dan kemudian menjalankan file php Anda dengan variabel-variabel yang ditetapkan.
sumber
Jika Anda memiliki kemungkinan untuk mengedit skrip PHP, Anda dapat secara artifisial mengisi array $ _GET menggunakan kode berikut di awal skrip dan kemudian memanggil skrip dengan sintaks:
php -f script.php name1=value1 name2=value2
sumber
Pada baris perintah tempel berikut ini
sumber
Saya hanya melewati mereka seperti ini:
berfungsi dengan baik, array $ _GET adalah:
sumber
php -r 'parse_str($argv[2],$_GET);include $argv[1];' index.php 'a=1&b=2'
Anda bisa menjadikan bagian pertama sebagai alias:
alias php-get='php -r '\''parse_str($argv[2],$_GET);include $argv[1];'\'
maka cukup gunakan:
php-get some_script.php 'a=1&b=2&c=3'
sumber
atau hanya (jika Anda memiliki LYNX):
sumber