我正在尝试执行exec
命令,但我遇到了问题。当我运行以下代码时,它通过浏览器运行时不起作用。但如果我将$str
副本的输出复制并粘贴到终端中,它就可以了。会导致这种情况的原因以及如何解决?目前我正在使用localhost
。
$php_location = "/usr/bin/php";
$data = str_replace("\"", "\\\"", json_encode($_POST));
$cwd = __DIR__;
shell_exec($str = "$php_locataion $cwd/phpExcel.php \"$data\" > /home/ryannaddy/Desktop/phpExcel.txt &");
echo $str;
这是shell_exec
正在调用的文件:
<?php
set_time_limit(0);
$args = $argv[1];
$data = json_decode(str_replace("\\\"", "\"", $args), true);
echo "hello!";
答案 0 :(得分:4)
当您通过浏览器运行它时,它将作为可能没有正确权限的Web服务器的用户执行。当您在终端中运行它时,它将以您登录的任何用户身份执行。检查apache(假设您使用的是apache)用户是否具有对脚本/目录的正确权限。
答案 1 :(得分:2)
该问题可能与权限有关。
当您从shell运行某些内容时,它会在您的用户帐户下运行。 Web服务器将以不同的方式运行,通常只有很少的权限。为Web服务器的帐户提供适当的权限,或者在不同的帐户下运行服务器(不推荐!)。