Intereting Posts
Получить идентификатор текущей категории активной страницы Ни один поддерживаемый encrypter не найден Как я могу разобрать JSON в html-таблицу с помощью PHP? PHP не отображает ошибки, хотя display_errors = On Как заставить работать ссылки, независимо от местоположения в структуре каталогов? Вызов случайных сеансов Codeigniter (уже опробованный переопределить класс сеанса И повышение session_time_to_update Сохранение содержимого nicedit textarea в базе данных mysql php-массив ведет себя странно с ключевым значением 07 & 08 Войти на другой сайт с помощью Curl в php Как уничтожить определенную сессию PHP PHP автоматически минимизирует. Есть ли? PHP: функция mail () с runtime ini_set () для SMTP и SMTP_PORT не работает в Linux Как использовать PHP для синтаксического анализа большого XML-файла последовательно разрушение сеанса в кодеригере после перенаправления codeigniter: почему это происходит, когда i echo base_url () в атрибуте href тега привязки, он повторяет два раза

Возможно ли создать файл * .sh с помощью PHP CLI и получить доступ к экспортированным Env vars в PHP-скрипте?

Я обычно источник * .sh-файла в терминале bash на linux, как это

. ./myscript.sh 

перед запуском скрипта PHP командной строки, поэтому я могу получить доступ к экспортированным переменным окружения, используя PHP $ _SERVER super global.

Возможно ли исходный файл sh из самого скрипта PHP, чтобы затем получить доступ к экспортируемым им переменным?

Я пробовал все виды без успеха. я пробовал

 system('. ./myscript.sh') system('sh ./myscript.sh') exec('. ./myscript.sh') exec('sh ./myscript.sh') shell_exec('. ./myscript.sh') shell_exec('sh ./myscript.sh') 

используя эти, экспортированные vars не появляются в $ _SERVER.

Есть идеи?

Solutions Collecting From Web of "Возможно ли создать файл * .sh с помощью PHP CLI и получить доступ к экспортированным Env vars в PHP-скрипте?"

Ваши переменные недоступны, потому что оболочка, в которой они существовали, вышла. Вам нужно выполнить PHP из одной оболочки, чтобы получить свои вары.

Или отредактируйте myscript.sh, чтобы запустить PHP-скрипт после установки vars:

 export VAR1=1 export VAR2=2 php -f /path/to/script.php 

Или напишите еще один скрипт-оболочку, который отправляет ваш файл, а затем запускает PHP из той же оболочки:

 . ./myscript.sh php -f /path/to/script.php 

Изменить: или просто запустите свой скрипт следующим образом:

 . ./myscript.sh && php -f /path/to/script.php 

Поиск файла в оболочке, например bash , требует, чтобы оболочка была запущена, и она просто читает в этом файле и интерпретирует ее. Когда вы запускаете php из командной строки оболочки, он разворачивает отдельный процесс, который наследует среду. Когда этот процесс заканчивается, он отбрасывает объем памяти исполняемого файла, включая среду.

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

Поэтому возможным решением для этого является сделать следующее.

  1. PHP-скрипту необходимо определить его местоположение в файловой системе.
  2. PHP-скрипт должен определить, называет ли он себя.
  3. Если скрипт НЕ вызывается сам, запустите скрипт bash для настройки среды, добавьте дополнительную переменную среды, чтобы она могла определить, чтобы она не спускалась по этому маршруту снова и не выполняла его. Возможно, используйте что-то вроде popen для popen в bash команды source , export , exec php
  4. Если сценарий вызывает себя, просто выполните

Кажется, много хлопот. Просто напишите сценарий для настройки среды, а затем запустите PHP.

Прежде всего, если вы создаете скрипт php командной строки, я не знаю, сколько переменных env вы получите в массиве $ _SERVER.

Возможно, вы захотите использовать функцию getenv() : http://www.php.net/manual/en/function.getenv.php

Кроме того, чтобы исправить свой файл, вы пробовали делать ?:

 exec('source ./myscript.sh') 

Дайте мне знать, если это поможет!