CakePHP Общее ядро ​​для нескольких приложений

На моей локальной установке у меня загружается множество сайтов CakePHP. Я использую Mac, поэтому структура папок – это что-то вроде ~/Users/cameron/Sites/sample-website а затем на каждом из этих сайтов у меня будет типичная папка Cake и папка App.

То, что я хотел бы сделать, это иметь только основную папку с тортами, а затем ВСЕ НАЧАЛОСЬ от этого одного ядра торта, поэтому я не имею одного и того же материала несколько раз. Я читал несколько уроков в Интернете: http://rickguyer.com/cakephp-one-core-many-apps/

Итак, у меня есть папка для торта: ~/Users/cameron/Sites/cake-1.3/ а затем мой сайт здесь: ~/Users/cameron/Sites/sample-site/ и в этой папке у меня есть обычная папка приложения и htaccess рассказать, где найти веб-сайт и т. д.

Теперь я отредактировал файл index.php внутри webroot, как учебник, но изменил только одну строку, потому что я не перемещал файлы OUTSIDE из папки приложения, как он. Поэтому единственное, что я изменил, следующее:

 if (!defined('CAKE_CORE_INCLUDE_PATH')) { define('CAKE_CORE_INCLUDE_PATH', '..'.DS.'..'.DS.'cake-1.3'); } 

Насколько я могу судить, это правильно выглядит два каталога и поиск папки под названием cake-1.3 но она просто дает ошибку 500?

Есть идеи, в чем проблема? благодаря

РЕДАКТИРОВАТЬ:

Даже делать это не работает ??? Что если я эхо: echo CAKE_CORE_INCLUDE_PATH; дает /Users/cameron/Sites/cake-1.3 и если я /Users/cameron/Sites/cake-1.3 в адресную строку, он загружает папку с /Users/cameron/Sites/cake-1.3 так что определенно правильная структура папок JUST ему не нравится смотреть на торт за пределами основного URL-адреса?

 if (!defined('CAKE_CORE_INCLUDE_PATH')) { define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3'); echo CAKE_CORE_INCLUDE_PATH; } 

Related of "CakePHP Общее ядро ​​для нескольких приложений"

Вы правы на деньги:

 define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3'); 

Просто убедитесь, что пользователи сидят в корне. Другими словами, когда вы переходите на терминал, вы можете попасть в этот каталог, набрав: cd /Users/cameron/Sites/cake-1.3

Похоже, вы можете быть на MAC. Если это так, ваша ссылка правильная. В большинстве случаев я нахожу, что вы сделали копию в каталоге приложения, и она не получает файлы .htaccess. Я бы сначала их проверил. Но вот полный список того, что вы должны проверить:

  1. Убедитесь, что хост указывает на правильный каталог ( /Users/cameron/Sites/sample-site/ )
  2. Проверьте, действительно ли mod_rewrite включен.
  3. Убедитесь, что вы скопировали файл .htaccess каталогах /Users/cameron/Sites/sample-site/ и /Users/cameron/Sites/sample-site/webroot .
  4. Подтвердите, что каталог /Users/cameron/Sites/cake-1.3/ имеет каталог с названием cake в нем, который содержит ядро.

Как только все это будет подтверждено, вы будете хороши как золото!

Счастливое кодирование!

UPDATE: Когда файл index.php ищет ядро ​​торта, он будет искать каталог внутри местоположения, на которое вы указываете другой каталог под названием cake. Итак, в вашем случае:

 define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3'); 

У вас должен быть каталог торта внутри /Users/cameron/Sites/cake-1.3 . Структура вашего каталога будет выглядеть так:

 /Users/cameron/Sites/cake-1.3/cake /Users/cameron/Sites/cake-1.3/cake/libs /Users/cameron/Sites/cake-1.3/cake/config /Users/cameron/Sites/cake-1.3/cake/console etc. 

CakePHP 3.0+ В CakePHP 3.0+ эта конфигурация переносится из webroot / index.php в App / Config / paths.php

Если у вас есть доступ к вашему php.ini, вы можете добавить туда путь к ядру Cake. Выполнение этого способа означает, что вам вообще не нужно менять webroot / index.php. Пример в php.ini:

 include_path = ".:/usr/local/lib/php:/home/something/phpinc/cakephp2/lib" 

Согласно документам CakePHP 2.x , это рекомендуемый способ совместного использования ядра Cake (при условии, что у вас есть доступ к вашему php.ini).

У вас может быть только одно ядро ​​для торта, но у вас должна быть одна папка приложения (содержащая MVC) по сайту.

Это непонимание структуры папок CakePHP?

В документации ( структура папок CakePHP ):

  • В папке приложения вы найдете свою магию: там будут размещены файлы вашего приложения.
  • В папке торта мы работаем с нашей магией. Сделайте личное обязательство не редактировать файлы в этой папке. Мы не можем вам помочь, если вы изменили ядро.

Поэтому папка cake не должна меняться между всеми вашими потребностями, поэтому у вас есть 1 копия. Вы всегда можете изменить некоторые функции ядра, внеся свои собственные изменения в папку app то есть расширяя.

Нет необходимости редактировать index.php.

Просто поместите псевдоним (или ссылку в UNIX) в папку вашего торта в каждой папке вашего сайта. Работает отлично. То же самое касается папки плагинов и вендоров.