これにより、実行を試みる前に、exec が使用可能で有効になっていることが確認されます。 exec() を実行し、関数が存在しないか無効になっている場合、警告が生成されます。サーバーの設定によっては、ブラウザにレンダリングされる可能性があり、ほぼ常にログ ファイルに行が書き込まれる =パフォーマンス ヒット。
// Exec function exists.
// Exec is not disabled.
// Safe Mode is not on.
$exec_enabled =
function_exists('exec') &&
!in_array('exec', array_map('trim', explode(', ', ini_get('disable_functions')))) &&
strtolower(ini_get('safe_mode')) != 1
;
if($exec_enabled) { exec('blah'); }
if(function_exists('exec')) {
echo "exec is enabled";
}
ini_get('disable_functions')
実際にやりたいことは、 ini_get('disable_functions')
を使用することです 利用できるかどうかを確認するには:
<?php
function exec_enabled() {
$disabled = explode(',', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
?>
ここでstackoverflowで回答:「exec」が無効になっているかどうかを確認してください。これは、実際にはPHP Manページから来ているようです: http://php.net/manual/en/function.exec.php#97187
パス
上記が true (exec() を使用できます) を返しても、PHP がまだスクリプトをトリガーできない場合は、そのスクリプトのパスに問題がある可能性が高く、次のようにしてテストします:
print exec('which bash');
そして試してみてください
print exec('which ogr2ogr');
これにより、関数が実際に機能するかどうかがチェックされます (許可、権利など):
if(@exec('echo EXEC') == 'EXEC'){
echo 'exec works';
}