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 行。(我的代码中没有任何其他反引号。)并且错误消息相当神秘

解析错误:解析错误,期望 `T_STRING' 或 `T_VARIABLE' 或 `T_NUM_STRING' 在 /blah.php 的第 446 行

如果你正在绞尽脑汁试图找到一个“不存在”的错误,可以将其作为参考。
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.net/disable-functions
disable_functions = "shell_exec"

然后您仍然可以使用 `exec()` 来运行终端命令。
To Top