На моей локальной установке у меня загружается множество сайтов 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; }
Вы правы на деньги:
define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3');
Просто убедитесь, что пользователи сидят в корне. Другими словами, когда вы переходите на терминал, вы можете попасть в этот каталог, набрав: cd /Users/cameron/Sites/cake-1.3
Похоже, вы можете быть на MAC. Если это так, ваша ссылка правильная. В большинстве случаев я нахожу, что вы сделали копию в каталоге приложения, и она не получает файлы .htaccess. Я бы сначала их проверил. Но вот полный список того, что вы должны проверить:
/Users/cameron/Sites/sample-site/
) .htaccess
каталогах /Users/cameron/Sites/sample-site/
и /Users/cameron/Sites/sample-site/webroot
. /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) в папку вашего торта в каждой папке вашего сайта. Работает отлично. То же самое касается папки плагинов и вендоров.