我有一种感觉它与权限做,我编译G ++PHP执行函数不执行与我的编译的程序权限
的main.cpp
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << "It works!" << std::endl;
return 0;
}
下面的程序和我有PHP文件
test.php的
<?php
// DEBUG /////////////////////////////////
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
//////////////////////////////////////////
$in = "/home/alex/Dropbox/code_snippets/output/a.out";
$out = exec($in);
echo "In : " . $in . "<br>";
echo "Out: " . $out . "<br>";
?>
在命令行中运行该程序我得到输出“It works!”然而,当我在PHP上运行时,我没有得到任何输出(我仍然得到[In:... \ nOut:],但我知道PHP正在工作)。
相关问题:php exec() is not executing the command
更让我把 “2> & 1” 的结尾,现在我得到的输出:
日期:SH:1:/家庭/亚历克斯/ Dropbox/code_snippets/output/a.out:权限被拒绝
在做了一个快速sudo chmod 0777到a.out后,我仍然得到了同样的结果。 也尝试过sudo chown www-data a.out来赋予PHP的所有权,但那也不起作用,我相信这很简单,但我发现难以获得解决方案。提前致谢。
编辑:
exec()函数肯定的作品,因为我使用EXEC(“WHOAMI”),以找出它是执行它通过PHP用户WWW的数据。在目录
试图执行opendir()函数,它返回相同的权限被拒绝
警告:执行opendir(/家/亚历克斯/ Dropbox的/ code_snippts /输出):未能打开目录:权限被拒绝在/var/www/html/test.php
我猜这是因为PHP只限于执行/ var/www中的东西后有一点在互联网上看起来更多我发现这可能有所帮助:
https://help.ubuntu.com/community/ApacheMySQLPHP向下滚动到部分安装suPHP似乎是设置在/ var/www目录以外的目录中运行的东西的方法有任何其他人有更好的想法吗?
将a.out复制到/ var/www,PHP正在输出“It works!”。
你检查了你的php.ini,以确保你被允许使用exec()函数吗?具体检查它是否列在'disable_functions'中 – mz3 2014-09-04 15:28:39
您的PHP文件位于何处?你能打开目录/ home/alex/Dropbox/code_snippets/output /它吗? (opendir()所,例如功能) – Petr 2014-09-04 15:32:11