【发布时间】:2018-08-26 05:06:55
【问题描述】:
我正在尝试使用exec() 在/var/www/litecoin/bin 和echo 输出中运行程序。
基本上,这是:
(来自/var/www/html/index.php)
<?php
echo exec("../litecoin/bin/litecoin-cli getinfo");
?>
不过,它只是显示一个空白页面。
我知道这可能是权限错误,因为运行 ls 工作正常,但我不知道如何修复它。 (或者如果有更好的做事方式)
直接通过终端运行命令可以正常工作。 如果重要的话,我在 Ubuntu 16.04 上使用 PHP7.0 和 Apache。
编辑
当我通过终端运行php index.php 登录www-data 时,它运行良好,但是当我在网络浏览器中打开它时,它似乎根本没有执行/var/www/litecoin/bin/litecoin-cli。
编辑 2
将错误从 stderr 重定向到 stdout (2>&1) 时,我得到以下信息:
[0] =>
[1] =>
[2] => ************************
[3] => EXCEPTION: N5boost10filesystem16filesystem_errorE
[4] => boost::filesystem::create_directory: Permission denied: "/.litecoin"
[5] => litecoin in AppInitRPC()
[6] =>
www-data 拥有 /var/www/ 的完全权限。
【问题讨论】:
-
我认为问题在于环境不同。您应该尝试运行
$out = array(); exec("env", $out); var_dump($out);并查看是否缺少HOME环境变量?我认为这是您的情况下没有正确设置环境变量的问题
标签: php apache permissions litecoin