Использование mysqldump в PHP без использования всего пути - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь создать простую программу на Laravel, которая позволила бы пользователю нажимать кнопку, и резервный SQL для их базы данных создавался бы локально.

$command = "/usr/local/mysql/bin/mysqldump --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') . "  > " . storage_path() . "/" . $filename;

$returnVar = NULL;
$output = NULL;
exec($command, $output, $returnVar);

Это мой текущий код, и, как вы можете видеть, я указал полный путь к mysqldump, а если нет, просто возвращает пустой .sql. Эта же команда (без полного пути) выполняется без ошибок, когда я запускаю ее в терминале, теперь этот код будет выполняться в локально разных средах (Windows, Linux, Mac), и путь к mysqldump будет отличаться в каждой.

Есть ли способ сделать это без указания всего пути?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете использовать другую переменную env со значением по умолчанию 'mysqldump'.

Однако вы не должны использовать переменные env непосредственно в вашем коде, загружайте их в параметры конфигурации в ваших файлах конфигурации. env () не будет работать после кэширования конфигурации.

Однако основная проблема заключается в том, что /usr/local/mysql/bin отсутствует в переменной PATH для веб-пользователя. PHP exec $ PATH, переменные отсутствуют элементы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...