PHP - 这个语法实际上执行命令了吗?

PHP - does this syntax actually execute the command?

在尝试清理项目中的一些旧代码时,我 运行 跨过这些行:

$cmd = "mkdir -p ".dirname($target);
`$cmd`; // Auto creating folder if needed

我尝试 运行 在一个单独的脚本上执行此操作,但它没有创建文件夹(如我所料),但我想知道我是否遗漏了一些实际可行的东西?

注意:$cmd 未在其他任何地方使用

就像其他成员已经说过的那样,反引号是 execution operator。您可以在 "execution" 之前使用 echo 检查命令是否有任何输出,如下所示:

$cmd = "mkdir -p ".dirname($target);
echo `$cmd`;

无论如何,恕我直言,使用反引号可能有点令人困惑,因此您可以使用 shell_exec(),这样更清楚那里发生了什么。例如:

$output = shell_exec("mkdir -p ".dirname($target));
echo "<pre>$output</pre>";

另一方面,您真的需要那样创建目录吗?您可以使用 mkdir() 函数来替换它,例如文档中的以下调整示例:

if (!mkdir(dirname($target), 0777, true)) { // true argument stands for recursive - equivalent of -p in mkdir in linux command
    die('Failed to create folders...');
}
// mkdir() function returns boolean value so you can easily know if directory was created or not

关于创建目录的位置,我会查看从当前工作目录的 dirname() of $target and getcwd() 函数返回的内容,看看是否一切都符合预期。

echo dirname($target);
echo getcwd();