Запуск сценария оболочки из php, а затем сценария php из оболочки, не могу заставить его работать

0

Я бегу в .sh скрипт PHP с exec (попытался shell_exec и passthru тоже) и добавив команду с >/dev/null 2>&1 & поэтому сценарий PHP освобождает браузер. Затем в сценарии оболочки я запускаю еще один php файл и записываю ответ этого файла php в переменную. Сценарий оболочки заканчивается вызовом index.php на сервере вместо поставляемого файла php.

Здесь моя команда php для запуска сценария оболочки:

exec(BASE.'/../shellfile.sh '.$arg1.' '.$arg2.' '.$arg3.' >/dev/null 2>&1 &');

И вот моя команда для запуска php файла из сценария оболочки:

VAR1=$(php -q $BASE/processingfile.php $FOLDER/temp.txt)

Боковые заметки:

BASE определяется в PHP-скрипте, а $arg1, $arg2 и $arg3 - это определенные переменные.

VAR1, BASE и FOLDER определены в сценарии оболочки.

Я попытался запустить BASE.'/../shellfile.sh '.$arg1.' '.$arg2.' '.$arg3.' >/dev/null 2>&1 &' BASE.'/../shellfile.sh '.$arg1.' '.$arg2.' '.$arg3.' >/dev/null 2>&1 &' BASE.'/../shellfile.sh '.$arg1.' '.$arg2.' '.$arg3.' >/dev/null 2>&1 &' от Putty с SSH, и он работает хорошо. Он включает правильный файл вместо index.php если он запускается непосредственно из SSH.

Итак, это логика: PHP → Запустить файл оболочки и освободить браузер, Shell → Запустить файл PHP и захватить ответ.

Сценарий оболочки заканчивается вызовом index.php на сервере вместо processingfile.php. Кроме того, заголовки PHP, такие как X-Powered-By: PHP/5.X.XX, возвращаются в сценарий оболочки из index.php и сохраняются в переменной оболочки VAR1.

Любые предложения о том, что я делаю неправильно?

Дополнительные замечания:

  • Первый файл PHP находится под общей папкой, тогда как сценарий оболочки и файл processingfile.php расположены над общей папкой

  • У меня есть файл.htaccess в общей папке, но не выше

  • shellfile.sh и processingfile.php являются права измененными 777.

  • 0
    Пожалуйста, внесите изменения в свой вопрос вместо того, чтобы размещать дополнительную информацию в разделе комментариев.
Теги:
exec

1 ответ

0

Возможно, вам придется перейти из каталога по умолчанию (например, каталог, где index.php), в каталог, где вы хотите запустить скрипт. Например, используйте команду, подобную этой, чтобы сообщить php, где искать скрипт.

exec("cd path/to/file && sh ./yourScript.sh);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню