我的托管服务器上有一个C ++二进制文件(由Arvixe FYI托管)。我的网站上有一个表格,需要3个输入。我拿这3个输入并使用PHP将它们放在一个文件中。我试图从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);
有人可以说清楚吗?正在直接创建输入文件。我对服务器中的应用程序有执行权限。我不确定可执行文件是否完全没有运行,或者由于权限问题而无法生成输出。
答案 0 :(得分:0)
大多数商业共享主机以安全模式运行PHP,这会禁止exec()或至少将其限制为特殊目录。检查一个简单的可执行文件。