2

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

2 回答 2

4

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

于 2013-03-11T14:58:31.687 回答
2

该问题可能与权限有关。

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

于 2013-03-11T14:58:50.017 回答