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();
在尝试清理项目中的一些旧代码时,我 运行 跨过这些行:
$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();