Каков наилучший способ настройки файлов сценария php на веб-сервере? - PullRequest
2 голосов
/ 24 июня 2009

Я запускаю один и тот же php-скрипт на многих доменах на сервере apache2. Только некоторые файлы меняются между доменами, а остальные всегда одинаковы. Прямо сейчас, каждый раз, когда я настраиваю новый домен, я копирую все файлы, но мне бы очень хотелось, чтобы эти общие файлы были в одном месте, чтобы любые изменения затронули все домены.

Я подумал об использовании набора символических ссылок для указания на общие файлы. Это нормальный подход, или я могу внести некоторые простые изменения в сценарии php или файлы конфигурации apache, чтобы сделать это более эффективным?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 24 июня 2009

То, как я это делаю, - это создание «общего» каталога, в который я помещаю все файлы, которые могут быть разделены между каждым сайтом. Тогда я просто включаю их там, где они нужны.

Это очень хорошо, потому что позволяет добавлять функции на нескольких сайтах.

2 голосов
/ 24 июня 2009

Я бы предложил абстрагировать общий код в набор «библиотечных» скриптов. Поместите их в общий каталог и сделайте их доступными, изменив переменную PHP include_path . Это означает, что вам, скорее всего, не придется изменять свои текущие сценарии, при этом устраняя необходимость иметь более одной копии.

Этот путь может (и, вероятно, должен) быть за пределами ваших общедоступных каталогов. Это повышает безопасность ваших веб-сайтов, не делая их непосредственно доступными для внешних пользователей.

1 голос
/ 24 июня 2009

У вас может быть каталог библиотеки, расположенный над всеми вашими сайтами, и файл конфигурации, в котором указано, какие файлы библиотек ваши сайты должны включать по умолчанию. Затем вы можете иметь другой файл конфигурации на каждом сайте, который переопределяет глобальную конфигурацию. Эти файлы конфигурации могут использоваться для генерации операторов include ('../../ lib / *. Php') для создания набора основных функций, необходимого для каждого сайта.

some_high_level_directory/
-> lib/
   ->*.php (library files)
-> config.php (global library includes)
-> site_1/
   -> config.php (library includes that only relate to site_1)
   -> www/
-> site_2/
   -> config.php (library includes that only relate to site_2)
   -> www/
-> etc, etc

Надеюсь, это имеет смысл ...:)

1 голос
/ 24 июня 2009

Это может быть немного сложно, так как приложение почти должно знать, что вы делаете это. IME, он работает лучше всего, когда вы можете разделить приложение на общий код и код экземпляра в двух отдельных деревьях каталогов. Общий код также не должен делать ничего глупого, например включать файл, который должен быть в дереве экземпляров.

Одна точка входа для загрузки общего кода также является большим бонусом, потому что тогда вы можете связать несколько очень маленьких файлов: код экземпляра включает один в своем собственном каталоге; этот файл включает файл вне кода экземпляра; этот файл затем либо загружает файл точки входа для общего кода, либо загружает другой, который делает. Теперь это только один способ сделать это, но это означает, что у вас есть только один файл, который должен знать, где находится общий код (так что вы можете переместить его, если вам нужно с минимальными усилиями), и если вы делаете это правильно, все различные деревья кода экземпляра загружают его, хотя и косвенно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...