使用PHP在Linux服务器上运行c++可执行文件


Run C++ Executable on Linux Server Using PHP

我在我的托管服务器上有一个c++二进制文件(与Arvixe托管,供参考)。我在我的网站上有一个表单,需要3个输入。我用PHP把这3个输入放到一个文件中。我试图从PHP内调用我的c++应用程序。应用程序接受2个参数,第一个是包含输入的文件,第二个是我想要输出的文件。

当我使用终端运行时,应用程序在我的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中使用什么来发送命令到终端并执行这个?

大多数商业共享主机以安全模式运行PHP,这种模式不允许exec(),或者至少将其限制在特殊目录下。用一个简单的可执行文件检查。