PHPからcmakeおよびmakeコマンドを使用して生成したc++バイナリファイルを実行しようとしています。ターミナルから同じコマンドを実行しようとすると、すべてが完璧に機能しますが、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);
}
そして、私のシェルスクリプトには、次のようなバイナリへの通常の呼び出しがあります
/path/to/folder/binary_file $args
シェルスクリプトからecho、ls、mkdir cmdを試してみましたが、これらのバイナリが実行されないだけで完璧に機能しました。