Я новичок с оболочкой сценариев, поэтому нужно несколько идей по разбору PHP-файла с использованием сценария оболочки.
Наш проект PHP, и я улучшаю наш сценарий оболочки, который используется для загрузки кода на рабочий сервер.
Существует один файл конфигурации PHP production.settings.php
который нужно читать во время загрузки, для нескольких констант –
BASE_PATH
(путь к корню проекта на сервере prod)
db_host
, db_name
и т. д. (настройки базы данных базы данных prod – для использования для резервного копирования базы данных перед загрузкой)
Вопрос
Как читать значение констант?
Они определяются следующим образом:
define("BASE_PATH","/path/to/project/root");
Как прочитать первое недокументированное значение константы?
Примечание . Константа может быть определена более одного раза в одном файле (предположим, что это возможно – это может произойти по ошибке или могут быть прокомментированы экземпляры строки)
Пока я могу получить только количество строк, содержащих определение строки define("BASE_PATH"
используя grep
в моем сценарии оболочки)
cd .. PROJECT_ROOT=$PWD result= grep -ic 'define("BASE_PATH",' $PROJECT_ROOT'/config/main.settings.php' echo "see"$result
Обновления
Проверьте мои другие вопросы для получения дополнительной информации об этом: –
Манипулируя массивом (напечатанным php-cli) в сценарии оболочки ,
Присвоение значений, напечатанных PHP CLI, переменным оболочки ,
Инициирование динамических переменных (переменных переменных) в сценарии оболочки bash
просто сделайте это с помощью php, а затем вызовите сценарий оболочки для вызова скрипта php.
Предполагая, что у вас есть куча определений, определенных в defs.php
:
define('NAME', 'JOHN'); define('HOBBY', 'FISHING');
затем создайте php-скрипт get_defs.php
:
require_once 'defs.php'; $const = get_defined_constants(true); foreach($const['user'] as $k => $v) { echo "export $k=$v"; }
то в своем сценарии оболочки запустите его так:
`php get_defs.php`
Что произойдет, get_defs.php выведет кучу export KEY=VALUE
, тогда оболочка будет запускать те команды, которые php get_defs.php
ваш php get_defs.php
.
Почему бы вам просто не использовать PHP CLI ? Это то, что вы понимаете? Возможно, вы могли бы поместить константы в файл ini и прочитать их?
Если youre comforttable с PHP, то используйте PHP для написания сценария оболочки. ЕСЛИ вы идете по этому маршруту, я бы переместил все настройки конфигурации в файл конфигурации … INI, YAML, XML, whetever плавает на вашей лодке. Затем я бы изменил загрузку приложения, которое определяет ваши константы, чтобы также читать из этого конфигурационного файла. Таким образом, вы можете использовать его как в своем сценарии, так и в приложении, не меняя его.