這篇文章主要介紹了關於PHP下的命令列執行,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
Usage: php [options] [-f] <file> [args...] php [options] -r <code> [args...] php [options] [-- args...] -s Display colour syntax highlighted source. -w Display source with stripped comments and whitespace. -f <file> Parse <file>. -v Version number -c <path>|<file> Look for php.ini file in this directory -a Run interactively -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -z <file> Load Zend extension <file>. -l Syntax check only (lint) -m Show compiled in modules -i PHP information -r <code> Run PHP <code> without using script tags <?..?> -h This help args... Arguments passed to script. Use -- args when first argument starts with - or script is read from stdin
CLI SAPI 模組有以下三種不同的方法來取得您要執行的 PHP 代碼:
在windows環境下,盡量使用雙引號, 在linux環境下則盡量使用單引號來完成。
讓 PHP 執行指定檔案。
php my_script.php php -f "my_script.php" 登入後複製 |
#以上兩種方法(使用或不使用 -f 參數)都能夠運行給定的 my_script.php 檔案。您可以選擇任何檔案來執行,您指定的 PHP 腳本並非必須以 .php 為副檔名,它們可以有任意的檔案名稱和副檔名。
在命令列直接執行 PHP 程式碼。
php -r "print_r(get_defined_constants());" 登入後複製 |
#在使用此方法時,請您注意外殼變數的替代及引號的使用。
#: 請仔細閱讀上述範例,在執行程式碼時沒有開始和結束的標記符!加上 -r 參數後,這些標記子是不需要的,加上它們會導致文法錯誤。
透過標準輸入(stdin)提供需要執行的 PHP 程式碼。
以上用法為我們提供了非常強大的功能,讓我們可以如下範例所示,動態地產生 PHP 程式碼並透過命令列執行這些程式碼:
$ some_application | some_filter | php | sort -u >final_output.txt 登入後複製 |
以上三种运行代码的方法不能同时使用。
和所有的外壳应用程序一样,PHP 的二进制文件(php.exe 文件)及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但您通常都不会超过该限制)。传递给您脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称(当 PHP 代码来自标准输入获直接用 -r 参数以命令行方式运行时,该名称为“-”)。另外,全局变量 $argc 存有 $argv 数组中成员变量的个数(而非传送给脚本程序的参数的个数)。
只要您传送给您脚本的参数不是以 - 符号开头,您就无需过多的注意什么。向您的脚本传送以 - 开头的参数会导致错误,因为 PHP 会认为应该由它自身来处理这些参数。您可以用参数列表分隔符 -- 来解决这个问题。在 PHP 解析完参数后,该符号后所有的参数将会被原样传送给您的脚本程序。
# 以下命令将不会运行 PHP 代码,而只显示 PHP 命令行模式的使用说明: $ php -r 'var_dump($argv);' -h Usage: php [options] [-f] <file> [args...] [...] # 以下命令将会把“-h”参数传送给脚本程序,PHP 不会显示命令行模式的使用说明: $ php -r "var_dump($argv);" -- -h array(2) { [0]=> string(1) "-" [1]=> string(2) "-h" } 登入後複製 |
除此之外,我们还有另一个方法将 PHP 用于外壳脚本。您可以在写一个脚本,并在第一行以 #!/usr/bin/php 开头,在其后加上以 PHP 开始和结尾标记符包含的正常的 PHP 代码,然后为该文件设置正确的运行属性。该方法可以使得该文件能够像外壳脚本或 PERL 脚本一样被直接执行。
#!/usr/bin/php <?php var_dump ($argv); ?> 登入後複製 <span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span> |
假设改文件名为 test 并被放置在当前目录下,我们可以做如下操作:
$ chmod 755 test $ ./test -h -- foo array(4) { [0]=> string(6) "./test" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" } 登入後複製 如您所看到的,當您傳送以 - 開頭的參數給該腳本時,腳本仍然能夠正常運作。 ----------------------------------------- -------------------------------------指令選項----------- ------------------------------------------ 表格23-3.命令列選項
在上述程式中我們檢查了參數的個數是大於 1 個還是小於 1 個。即時參數是 --help、-help、-h 或 -?,我們仍然列印出幫助訊息,並同時動態輸出腳本的名稱。如果還收到了其它參數,我們也把它們顯示出來。 如果您希望在Unix 下執行以上腳本,您需要讓它成為可執行腳本,然後簡單的運行 script.php echothis 或 script.php -h。在Windows 下,您可以為此編寫一個批次檔:
以上是PHP下的命令列執行的詳細內容。更多資訊請關注PHP中文網其他相關文章! 本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
我應該在 apache 中哪裡放置 CustomLog 指令
我正在使用php:7.2-apachedocker。我需要禁用運行狀況檢查url登入訪問日誌。基於此鏈接,他們提到了有關修改Customlog指令的資訊。我不是關於需要更改Cust...
來自於 2024-04-06 22:03:59
0
1
990
Docker中使用NodeJS連接MySQL時出現錯誤
我創建了一個連接到MySQL的NodeJS後端伺服器。透過使用Docker,我使用以下命令建立了一個映像來運行我的nodeJS和package.json檔案(其中包括MySQL)。...
來自於 2024-04-06 12:07:19
0
1
415
npx create-react-app 指令出現錯誤,我該如何解決?
我一直在嘗試使用'npxcreate-react-app'命令創建一個新的React應用,但似乎對我來說無效。最近有其他人遇到這個問題嗎?我有一個穩定的互聯網連接,並確保我的系統上...
來自於 2024-04-05 14:42:18
0
1
3511
CommandText屬性初始化問題
我正在嘗試使用C#控制台應用程式同時將資料實現到2個(後來是3個)表中。我想在表格「用戶」中實現名字、姓氏和用戶ID,用戶ID將自動遞增。同樣的userID也應該與porilfeI...
來自於 2024-04-04 22:43:24
0
1
385
我的乘法 (*) 指令不計算
我的星號不起作用,當我執行calc()函數並執行乘法標記(即星號)時,該函數不起作用我想盡快解決這個問題,因為我正在學習編程,我需要你幫助解決- -標記大小:計算(var(--ce...
來自於 2024-04-04 21:18:17
0
1
315
相關專題
更多>
熱門教學
更多>
|