PHP-此语法实际上执行命令吗?

问题描述 投票:0回答:1

[在尝试清除项目中的某些旧代码时,我碰到了以下几行:

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

我试图在单独的脚本上运行它,但它没有创建一个文件夹(如我预期的那样,但是我想知道我是否丢失了一些可以实际使用的东西吗?

注意:$cmd在其他任何地方都没有使用

php command
1个回答
0
投票

[就像其他成员已经说过的反引号是execution operator。您可以检查“执行”之前是否使用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()$target函数的getcwd()返回的内容,看是否一切都如预期。

echo dirname($target);
echo getcwd();
© www.soinside.com 2019 - 2024. All rights reserved.