PHP - 无法执行 c++ 二进制文件?

PHP - Can't execute c++ binary files?

本文关键字:c++ 二进制文件 执行 PHP      更新时间:2023-10-16

我正在尝试执行c++二进制文件,我使用cmake和make命令从PHP生成。如果我尝试从终端执行相同的命令,一切都很完美,但从php似乎没有发生任何事情。我检查了safe_mode,它关闭了。我已经给了所有的可执行权限使用chmod。我试过把东西放在同一个文件夹,不同的文件夹。事实上,我已经尝试了我能想到的所有可能的解决方案,但我仍然无法执行这些二进制文件。知道为什么我不能这样做吗?

任何帮助都将是非常非常感激的。

提前感谢。

使用步骤:-

if($dir !== FALSE) {
    $command = "./segmentation.sh $dir->dirname >> $dir->dirname/log"; 
    $output = $this->terminal($command);
    echo $output['output'];
}

终端功能

public function terminal($command)
{
    if(function_exists('system'))
    {
        ob_start();
        system($command , $return_var);
        $output = ob_get_contents();
        ob_end_clean();
    }
    else if(function_exists('passthru'))
    {
        ob_start();
        passthru($command , $return_var);
        $output = ob_get_contents();
        ob_end_clean();
    }
    else if(function_exists('exec'))
    {
        exec($command , $output , $return_var);
        $output = implode("n" , $output);
    }
    else if(function_exists('shell_exec'))
    {
        $output = shell_exec($command) ;
    }
    else
    {
        $output = 'Command execution not possible on this system';
        $return_var = 1;
    }
    return array('output' => $output , 'status' => $return_var);
}

我的shell脚本有一个正常的对二进制文件的调用,比如

/path/to/folder/binary_file $args

我尝试了echo, ls, mkdir cmd从我的shell脚本,它工作完美,只有这些二进制文件没有得到执行。

看起来你的工作目录可能和你想象的不一样。

试试这个:

$path = realpath(dirname(__FILE__) );
$cmd = $path . $command;

并尝试执行该命令(假设c++文件与您正在运行的PHP文件在同一目录下)

是MAMP造成了这个问题。

如果你像我一样使用MAMP,那么你必须再执行一件事。

进入菜单->进入文件夹->在文本框中写入"/Applications/MAMP/Library/bin/" ->按回车

查找名为" envars "的文件,并使用#注释以下行:-

DYLD_LIBRARY_PATH = "/应用程序/MAMP/图书馆/lib: $ DYLD_LIBRARY_PATH"出口DYLD_LIBRARY_PATH

现在一切都好了。

感谢这个博客-作者jonathan Hill