PHP Conference Japan 2024

執行運算子

PHP 支援一種執行運算子:反引號 (``)。請注意,這些不是單引號! PHP 會嘗試將反引號中的內容作為 shell 命令執行;輸出將會被返回(也就是說,它不會直接輸出;它可以被賦值給一個變數)。反引號運算子的用法與 shell_exec() 相同。

<?php
$output
= `ls -al`;
echo
"<pre>$output</pre>";
?>

注意事項:

shell_exec() 被停用時,反引號運算子也會被停用。

注意事項:

與其他一些語言不同,反引號在雙引號字串中沒有特殊含義。

新增筆記

使用者貢獻的筆記 3 則筆記

robert
18 年前
只是一則關於一般用法的筆記。我的腳本出了個問題,讓我費了好大的勁才解決,原因是我不小心在一行的開頭放了一個這樣的反引號:

[許多程式碼]
` $URL = "blah...";
[更多程式碼]

因為反引號就在 Tab 鍵的正上方,我可能是在縮排程式碼時不小心按到了。

這個錯誤之所以難以發現,是因為 PHP 回報了一個語法錯誤,位置在包含反引號的那一行*下方*大約 50 行左右。(我的程式碼中沒有其他反引號。)而且錯誤訊息相當難懂:

語法錯誤:語法錯誤,在 /blah.php 的第 446 行預期 `T_STRING' 或 `T_VARIABLE' 或 `T_NUM_STRING'

如果您正在努力尋找一個「不存在的」錯誤,就把這件事記下來吧。
ohcc at 163 dot com
8 年前
您可以在一對反引號 (``) 中使用變數。

<?php
$host
= 'www.wuxiancheng.cn';
echo `
ping -n 3 {$host}`;
?>
paolo.bertani
2 年前
如果您想避免像 @robert 描述的情況,您可能會想要停用 `shell_exec`,進而停用反引號運算子。

要做到這一點,只需編輯 `php.ini` 檔案,並將 `shell_exec` 加入到 `disable_functions` 設定中

; 此指令允許您停用某些函式。
; 它接收以逗號分隔的函式名稱列表。
; https://php.dev.org.tw/disable-functions
disable_functions = "shell_exec"

這樣您仍然可以使用 `exec()` 來執行終端機指令。
To Top