看板 PHP 關於我們 聯絡資訊
我想用 php 的 system() (or exec(), `xxx` ... etc) 呼叫一個 c++ 程式 可是執行總是無法成功, 請問是什麼原因?? c++ 程式是用 g++ compile 的, 如果直接在 shell 執行不會有問題 用 system 則會得到傳回值為 126, 應該是表示無法執行的意思 另外我可以執行 system("ls") 像這樣的東西 或是換成一個 python 的檔也沒問題, 兩個程式權限看起來是一樣的 ---------- php file ---------- <?php $input = system("./test", $retval); echo $retval; ?> ---------- cpp file ---------- #include <iostream> using namespace std; int main(){ cout << "hello" << endl; return 0; } ---------- python ---------- #!/usr/bin/env python print "hello" php setting 看起來沒問題? ------------------------ safe_mode Off Off safe_mode_exec_dir no value no value safe_mode_gid Off Off safe_mode_include_dir no value no value 檔案的權限 ---------- -rwxr-xr-x 1 xxxxx xxxxx 90 Jun 11 00:03 test.py // python code -rwxr-xr-x 1 xxxxx xxxxx 11034 Jun 11 03:09 try // binary 在 shell 下皆可執行 $ ./test.py $ ./try in php ------ system("./test.py", $retval); // ok system("./try", $retval); // fail, exit 126 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.48.60
JoeHorn:用 exec() 06/11 01:48
aknow:還是不行 06/11 02:02
winstonw:會不會是權限的問題?試試看能不能用 www 的 user 跑 06/11 02:18
starjou:路徑是找得到的?檔案有設了可執行屬性? 06/11 03:31
aknow:我想檔案是找得到的 找不到會傳回 127 06/11 11:31
※ 編輯: aknow 來自: 140.112.48.60 (06/11 11:31)
yellowfishie:解決了 php是32bit的版本, 而g++是64bit的版本的關係 06/12 17:09