我的托管服务器上有一个C++二进制文件(使用Arvixe FYI托管)。我在我的网站上有一个需要3个输入的表单。我把这3个输入,并使用PHP将它们放入一个文件。我正试图从PHP中调用我的C++应用程序。该应用程序需要2个参数,第一个是带有输入的文件,第二个是需要输出的文件。使用PHP在Linux服务器上运行C++可执行文件
当我使用终端运行时,该应用在我的Mac上正常工作,但是当我将它放在托管服务器上时,该应用未运行。
这里是我的脚本PHP代码:
$user = JFactory::getUser();
$time_date = date("m-d-Y").time();
$file1 = "model1_".$user->id."_".$time_date."_input.txt";
$file2 = "model1_".$user->id."_".$time_date."_output.txt";
$path1 = "/home/hhansen/public_html/ads/".$file1;
$path2 = "/home/hhansen/public_html/ads/".$file2;
$file_handle = fopen($path1,'w');
$content = trim($_POST['form']['Input 1'])."\r\n";
$content .= trim($_POST['form']['Input 2'])."\r\n";
$content .= trim($_POST['form']['Input 3'])."\r\n";
fwrite($file_handle,$content);
fclose($file_handle);
$output = exec("/home/hhansen/public_html/ads/./model1 $path1 $path2",$retval);
是否有人可以提供一些线索?输入文件正在直接创建。我对服务器内的应用程序具有执行权限。我不确定可执行文件是否完全没有运行,或者它是否因为权限问题或其他原因而没有生成输出。
- 它是我的语法吗?
- 我使用了错误的功能吗?
- 我应该在PHP中使用什么命令将命令发送到终端并执行此操作?
你把它编译成Linux二进制文件吗?你不能从Mac复制和粘贴到Linux。二进制文件是“model1”,对吗? – FakeRainBrigand 2011-12-19 00:35:51
正确。这可能是我的问题。无论如何,我可以将它编译到我的Mac上的Linux二进制文件? – hanleyhansen 2011-12-19 00:41:40
我认为它是依赖于架构的,但是有[交叉编译技术](http://www.gc-linux.org/wiki/Cross-compiling)。我没有经验做我自己,但它看起来像gcc/g ++将是一个很好的解决方案。还有[维基百科文章](http://en.wikipedia.org/wiki/Cross_compiler#GCC_and_cross_compilation)。 – FakeRainBrigand 2011-12-19 00:56:44