あなたの質問に与えられたパス以外のパスは見つかりませんでした。しかし、私の考えでは、mysqldump
は、ほとんどの場合、mysql
バイナリと同じディレクトリにあるはずです。現在、ほとんどの場合、mysql
コマンドがパスに入ります。
そして、そのため、あなたはこのように、ほとんどの場合、mysqldump
バイナリの場所を持っているために、2つのロジックを組み合わせることができます:
function detect_mysqldump_location() {
// 1st: use mysqldump location from `which` command.
$mysqldump = `which mysqldump`;
if (is_executable($mysqldump)) return $mysqldump;
// 2nd: try to detect the path using `which` for `mysql` command.
$mysqldump = dirname(`which mysql`) . "/mysqldump";
if (is_executable($mysqldump)) return $mysqldump;
// 3rd: detect the path from the available paths.
// you can add additional paths you come across, in future, here.
$available = array(
'/usr/bin/mysqldump', // Linux
'/usr/local/mysql/bin/mysqldump', //Mac OS X
'/usr/local/bin/mysqldump', //Linux
'/usr/mysql/bin/mysqldump' //Linux
);
foreach($available as $apath) {
if (is_executable($apath)) return $apath;
}
// 4th: auto detection has failed!
// lets, throw an exception, and ask the user to provide the path instead, manually.
$message = "Path to \"mysqldump\" binary could not be detected!\n"
$message .= "Please, specify it inside the configuration file provided!"
throw new RuntimeException($message);
}
さて、あなたはあなたの目的のために上記の機能を使用することができます。また、上記の関数がエラーをスローする場合、ユーザがバイナリに手動でmysqldump
への明示的なパスを提供する方法を提供します。あなたのユースケースで動作するはずです:)
最初に実行したときに 'find -name mysqldump -type f -perm/u = x'を実行して、ファイルに値をキャッシュしましたか? –
私は試していません。私はちょうど私のMacでこれを行い、 'find:-perm:/ u = x:不正なモード文字列' –
古いバージョンのfindのように見える、-perm/u + xまたは-perm/444、 +444 –