作者aknow (嘎嘎)
看板PHP
標題system 的問題
時間Wed Jun 11 01:30:25 2008
我想用 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