PHP脚本可以在终端中工作,但不能在浏览器中工作


PHP Script works in the terminal but not the browser

我正在尝试执行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!";

当您通过浏览器运行它时,它作为web服务器的用户执行,可能没有正确的权限。当您在终端中运行它时,它以您登录的用户身份执行。检查apache用户(假设您正在使用apache)对脚本/目录具有正确的权限。

问题可能与权限有关。

当您从shell中运行某些东西时,它在您的用户帐户下运行。web服务器将以不同的方式运行,通常只有很少的权限。要么给web服务器的帐户适当的权限,要么在不同的帐户下运行服务器(不推荐!)。

相关文章: