Самый простой способ прочитать настройки конфигурации из файла PHP и загрузить весь код проекта, используя скрипт оболочки - PullRequest
1 голос
/ 07 декабря 2010

Я новичок в создании сценариев оболочки, поэтому мне нужно несколько идей по синтаксическому анализу 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
  • Достаточно ли хорош этот метод синтаксического анализа, или файл yml будет лучше?Есть ли какая-либо команда оболочки / фрагмент для этого, чтобы я мог получить результат, написав меньшее количество кода?

Обновления
Проверьте мои другие вопросы для получения более подробной информациипо этому поводу: -
Управление массивом (печатным с помощью php-cli) в сценарии оболочки ,
Назначение значений, напечатанных с помощью CLI PHP, переменным оболочки ,
Инициирование динамических переменных (переменных переменных) в сценарии оболочки bash

Ответы [ 3 ]

1 голос
/ 07 декабря 2010

просто сделайте это с помощью 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, затем shell выполнит те команды, которые выдает php get_defs.php.

1 голос
/ 07 декабря 2010

Почему бы вам не написать код с помощью PHP CLI ?Это ты понимаешь?Также, возможно, вы могли бы поместить константы в файл ini и прочитать их?

0 голосов
/ 07 декабря 2010

Если вам комфортно с PHP, используйте PHP для написания сценария оболочки. Если бы вы пошли по этому пути, я бы переместил все настройки конфигурации в файл конфигурации ... INI, YAML, XML, где бы то ни было. Затем я бы изменил загрузчик приложения, которое определяет ваши константы, чтобы также читать из этого файла конфигурации. Таким образом, вы можете использовать его как в своем скрипте, так и в приложении, не меняя его.

...