我有一種感覺它與權限做,我編譯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