PHP exec命令在shell和php命令行中工作,但不在网站上

时间:2013-08-27 18:12:53

标签: php exec

我有一个问题,我试图复制在我使用php exec命令挂载的服务器驱动器上生成的文件。但是,从网页调用时,该命令不起作用(尽管返回状态为1)。

$src = "/mnt/...";
$dest = "/var/www/...";
exec("cp $src $dest");

我尝试打印出命令以确保它是正确的,确实如此。在尝试复制文件之前,我还尝试确保该文件存在,而且它是。

if (file_exists($src)) {
    exec("cp $src $dest");
}

将命令直接复制到终端可以正常工作。

$ >cp /mnt/... /var/www/...

我也尝试使用php命令行工具来运行exec命令,这也有效。

$ >php -r 'exec("cp /mnt/... /var/www/...");'

我也尝试过使用shell_exec,结果相同。

3 个答案:

答案 0 :(得分:0)

您可以添加第二个参数来帮助调试,$output将显示cp命令正在执行的操作,是否是错误。

我还建议在文件周围放置引号,以防有空格的东西进入。

$src = "/mnt/...";
$dest = "/var/www/...";
exec("cp '$src' '$dest'", $output, $retrun_var);

var_dump($output, $retrun_var);

答案 1 :(得分:0)

我前一段时间有similar issue。这基本上就是所有评论员所说的。 Web服务器的用户/权限受到限制,但也包括正在使用的shell环境和/或PATH环境变量。

答案 2 :(得分:0)

主机通常禁用shell命令。 在您的本地计算机上,您可以编辑library(tidyverse) library(treeio) library(ggtree) # create a tree and add a numeric annotation called 'range' tree = rtree(3) %>% as.treedata %>% as_tibble %>% mutate(number = 1:5, range = lapply(number, function(x) c(-0.1, 0.1) + x)) %>% as.treedata # plot the tree and add red bars with geom_bar() ggtree(tree) + geom_range("number", range='range', color="red", size = 3, alpha = 0.3) + theme_tree2() 并添加以下行以禁用所需的功能:

php.ini

但是在您的实时网站上,您需要联系主机提供商以启用默认情况下禁用的功能。