«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему мой сценарий Bash не выполняется при вызове из PHP с использованием «shell_exec»?

Почему мой сценарий Bash не выполняется при вызове из PHP с использованием «shell_exec»?

Опубликовано 9 ноября 2024 г.
Просматривать:461

Why is my Bash script failing to execute when called from PHP using `shell_exec`?

Выполнение команд Bash из PHP: устранение неполадок при неудачном выполнении скрипта

В этом вопросе мы встречаемся с разработчиком PHP, пытающимся выполнить скрипт bash из PHP с помощью Shell_exec. Используемый синтаксис:

$output = shell_exec("./script.sh var1 var2");

Однако при вызове этой команды сценарий не выполняется.

Для устранения этой проблемы важно определить причину сбоя. Поскольку сценарий успешно выполняется при запуске через командную строку с использованием ./script.sh var1 var2, проблема, скорее всего, кроется в коде PHP.

Одной из распространенных проблем, которые могут привести к сбою выполнения сценария, являются неправильные разрешения или пути к каталогу. . PHP-скрипты часто требуют установки правильного рабочего каталога перед выполнением внешних команд. Чтобы решить эту проблему, код может указать правильный каталог с помощью chdir перед вызовом Shell_exec.

Следующий фрагмент решает эту проблему:

$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);

В этом примере мы:

  1. Сохраняем текущий рабочий каталог в $old_path.
  2. Изменяем рабочий каталог на '/my /path/' с помощью chdir.
  3. Выполните сценарий bash с помощью Shell_exec.
  4. Перейдите обратно в исходный рабочий каталог с помощью chdir($old_path).

By гарантируя, что правильный каталог находится на месте, этот измененный код должен успешно выполнить сценарий bash из PHP.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3