Использование mysqldump в PHP без использования всего пути

Я пытаюсь создать простую программу на 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 будет отличаться в каждом.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

когда вы говорите другую переменную env со значением по умолчанию mysqldump. Вы имеете в виду переменную env, которая будет направлена ​​на mysqldump? что бы победить цель, верно? id должен указывать весь путь в env, я также пробовал с конфигурацией, происходит то же самое, но да, плохое изменение конфигурации в окончательном коде

ashish_arma 07.09.2018 20:26

Почему это могло бы победить цель? Переменные среды - это то место, где вы должны указать параметры, которые изменяются или являются уникальными для среды, в которой выполняется приложение.

Devon 07.09.2018 20:32

Я хотел бы сделать это таким образом, но я не могу попросить своего пользователя найти файл mysqldump на своем компьютере

ashish_arma 07.09.2018 20:41

Тогда я не уверен, что понимаю ваш код. Зачем это запускать на их компьютере? Вы уже используете переменные среды для определения базы данных, если их путь к mysqldump лежит за пределами PATH среды, кажется логичным использовать ее там.

Devon 07.09.2018 20:43

Другие вопросы по теме