作者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
1F:推 JoeHorn:用 exec() 06/11 01:48
2F:→ aknow:还是不行 06/11 02:02
3F:→ winstonw:会不会是权限的问题?试试看能不能用 www 的 user 跑 06/11 02:18
4F:→ starjou:路径是找得到的?档案有设了可执行属性? 06/11 03:31
5F:→ aknow:我想档案是找得到的 找不到会传回 127 06/11 11:31
※ 编辑: aknow 来自: 140.112.48.60 (06/11 11:31)
6F:推 yellowfishie:解决了 php是32bit的版本, 而g++是64bit的版本的关系 06/12 17:09