CakePHP Shared core для нескольких приложений - PullRequest
4 голосов
/ 18 апреля 2011

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

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

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

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

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, и если я вставляю это в адресную строку, он загружает папку тортов, так что это определенно правильная структура папок, ТОЛЬКО ему не нравится смотреть на торт вне основного 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;
}

Ответы [ 5 ]

3 голосов
/ 19 апреля 2011

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

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, который содержитcore.

Как только все это подтвердится, вы станете золотом!

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

ОБНОВЛЕНИЕ: КогдаФайл index.php ищет ядро ​​Cake, он ищет каталог внутри того места, на которое вы указываете другой каталог с именем 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

1 голос
/ 30 сентября 2012

Если у вас есть доступ к вашему 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).

0 голосов
/ 18 апреля 2011

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

Из документов ( Структура папок CakePHP ):

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

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

0 голосов
/ 19 апреля 2011

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

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

0 голосов
/ 18 апреля 2011

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

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