У меня есть общая папка, которая содержит все версии Zend Framework, которые используются всеми различными приложениями. Каждое приложение ссылается на них. Таким образом, мы имеем структуру каталогов, например, так:
htdocs/common/zend-1.10.1/
htdocs/common/zend-1.10.2/
htdocs/apps/app1
htdocs/apps/app2
Если же мы на производственной среде - например app1 был развернут на его собственном сервере, то мы просто делаем app1 корень/HTDOCS папку (так загрузить все материал в папке app1 в htdocs сервера). Затем мы также создаем общую папку и загружаем любые библиотеки, которые использует конкретное приложение.
Это работает так же, как и общая папка define(COMMON_PATH, $_SERVER['DOCUMENT_ROOT'].'/common')
, поэтому для разных структур каталогов не требуется дополнительной настройки. Затем мы можем использовать это в нашем приложении. zendpathorwhatever = COMMON_PATH "/zend-1.10.2
Таким образом, у нас есть только одна копия каждой версии фреймворка zend, которую мы используем, и для производства нам нужно только загрузить то, что нам нужно.
Каждое приложение всегда имеет собственную библиотечную папку, так как это используется для каждого приложения. Если выясняется, что все приложения используют библиотеку, то мы вставляем ее в общую папку.
В целом, это легко управлять, и оказалось, что это довольно элегантное решение при использовании SVN Externals.
Справедливая точка. Как вы обрабатываете проблемы с развертыванием? Просто измените код, который ссылается на путь, когда он переходит на другой сервер? Или, может быть, вы можете использовать ... Я забыл термин PHP, но application.ini и имел разные настройки, указывающие на местоположение? –
Каждое приложение имеет библиотеку для библиотек. У нас также есть папка с общей библиотекой на сервере для вещей Zend или Doctrine. Поэтому при каждом развертывании мы просто привязываем папку Zend в общей библиотеке к папке локальной библиотеки приложения. Мы используем Capistrano для автоматического развертывания, что делает вещи грязными. –