我的托管服务器上有一个 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);
有人可以解释一下吗?正在直接创建输入文件。我确实对服务器内的应用程序具有执行权限。我不确定可执行文件是否根本没有运行,或者它是否只是因为权限问题或其他原因而没有生成输出。
- 这是我的语法吗?
- 我是否使用了错误的功能?
- 我应该在 PHP 中使用什么来向终端发送命令并执行它?
最佳答案
大多数商业共享主机在安全模式下运行 PHP,这不允许 exec() 或至少将其限制在特殊目录中。检查一个简单的可执行文件。
关于php - 使用 PHP 在 Linux 服务器上运行 C++ 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8556011/