Что ж, теперь вы знаете все, что можно знать о структуре и предназначении всех библиотек CakePHP, или же вы просто пропустили предыдущие главы и сразу перешли к этой, потому что вас абсолютно не волнуют библиотеки и вы просто хотите начать игру. В любом случае, вы уже готовы пачкать руки.
Эта глава опишет, что должно быть установлено на сервере, различные пути настройки сайта, закачки и установки CakePHP, а также некоторые советы по устранению ошибок (вдруг что-то пойдет не так, как запланировано).
Вот требования к настройке сервера для того, чтобы запустить CakePHP:
Есть несколько способов получить копию CakePHP: взять релиз с сайта CakeForge, получить ночную сборку, или скачать свежую версию кода из SVN-хранилища.
Чтобы скачать стабильную версию кода, проверьте секцию с фалами CakePHP проекта CakeForge, посетив http://cakeforge.org/projects/cakephp/.
Ночную сборку можно скачать с http://cakephp.org/downloads/index/nightly. Ночные релизы стабильны и очень часто включают в себя исправления ошибок между официальными релизами.
Чтобы получить свежую копию из нашего SVN хранилища, воспользуйтесь своим любимым SVN клиентом и подключитесь к https://svn.cakephp.org/repo/trunk/cake/. Затем выберите версию поновее.
Теперь, когда вы скачали самый последний релиз, разместите запакованный файл на свой веб-сервер в корневой веб-каталог (webroot). Теперь вам нужно распаковать CakePHP. Есть 2 варианта расположения файлов: для разработчика, что позволит вам отображать множество CakePHP-приложений под одним доменом, или же используя «среду продукции», что позволит отображать одно CakePHP-приложение на домене.
Первый способ настроить CakePHP вообще-то рекомендуется для среды разработчиков, поскольку он менее защищен. Второй способ более защищен и поэтому его следует использовать в среде продукции.
ЗАМЕЧАНИЕ: /app/tmp должен быть доступным для записи пользователем
Чтобы использовать Cake только для разработки мы можем разместить всю установочную директорию в определенный DocumentRoot как то:
В этом случае каталог wwwroot выступает как веб-корень, поэтому ваши ссылки будут похожи на эту (если вы конечно используете mod_rewrite):
http://www.example.com/cake/controllerName/actionName/param1/param2
Для использования среды продукции, вам понадобятся права для изменения DocumentRoot на вашем сервере. Это делает весь домен одним приложением Cake PHP?.
В этом случае файлы размещаются так:
Предлагаемая настройка httpd.conf
DocumentRoot /path_to_cake/app/webroot
В этом случае директория webroot выступает как веб-корень, так что ваши ссылки будут выглядеть подобно этой (если вы используете mod_rewrite):
http://www.example.com/controllerName/actionName/param1/param2
Может быть вам захочется разместить директории Cake в разных местах на диске. Возможно это понадобится из-за ограничений сервера, или же может быть вы просто захотите чтобы несколько ваших приложений делили одни библиотеки Cake.
Вот три главные части для приложений Cake:
Каждая из этих директорий может быть расположена где угодно в вашей файловой системе, за исключением webroot, который должен быть доступен вашему веб-серверу. Вы даже можете переместить каталог webroot из каталога app, только не забудь сообщить об этом Cake. :-)
Для того чтобы разнести эти папки, вам понадобится сделать изменения в /app/webroot/index.php. Вот три константы, которые вам понадобится изменить: ROOT, APP_DIR и CAKE_CORE_INCLUDE_PATH.
/app/webroot/index.php (частичный, комментарии удалены)
<?
if (!defined('ROOT')) {
define('ROOT', dirname(dirname(dirname(__FILE__))));
}
if (!defined('APP_DIR')) {
define ('APP_DIR', basename(dirname(dirname(__FILE__))));
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', ROOT);
}
?>
На примере проиллюстрировать будет проще. Представьте, что я хочу заставить Cake работать со следующими настройками:
Т.е. файлы будут располагаться так:
Чтобы все это заработало необходимо чуть-чуть поменять index.php (в этом примере он находится в /var/www/mysite/index.php):
Рекомендуется использовать 'DS'-константу вместо слешей чтобы разграничивать пути к файлам. Это предотвратит ошибки типа 'missing file', которые обычно возникают, если используется неверный разделитель, также это делает ваш код более переносимым.
<?
if (!defined('ROOT')) {
define('ROOT', DS.'home'.DS.'me');
}
if (!defined('APP_DIR')) {
define ('APP_DIR', 'mysite');
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
}
?>
Пока мы разрабатывали работу Cake PHP? с mod_rewrite было замечено, что некоторые пользователи испытывают большие затруднения при работе с этим модулем, в итоге ничего не работает. Вот несколько советов:
Хорошо, давайте посмотрим на Cake в действии. В зависимости от настроек, которые вы использовали направляем свой браузер на http://www.example.com или http://www.example.com/cake. На этой точке вам будет представлена страница Cake PHP? по умолчанию, а также сообщение, которое расскажет вам о статусе текущего подключения в базе данных.
Поздравляем! Теперь вы готовы к созданию вашего первого приложения на Cake.
Top Server? Ошибка 403
Дарю сутки моей жизни тем, кто работает с Top Server? Apache 2.0 http://topserver.ru/ (отладка на http://localhost/)
После установки Cake PHP? при вызове корневого каталога из браузера возникает ошибка 403. Что делаем.
Шаг 1. Обязателен если сайт задуман как виртуальный хост или как каталог пользователя
Открываем файл T:\usr\local\Apache\conf\httpd.conf
или Файл конфигурации Apache http://localhost/admin/apache/config.php (одно и то же)
Ищем Код:
Options Includes
Заменяем на код:
//Options Includes
Options Follow Sym Links?
Ищем Код:
# Дополнительные конфигурации модулей Apache
и ниже добавляем Код:
<If Module? mod_rewrite.c>
Rewrite Engine? on
</If Module?>
Сохраняем, перезапускаем
Шаг 2. Обязателен если сайт задуман как виртуальный хост, необязателен если как каталог пользователя
Открываем файл T:\usr\local\Apacheconf\vhosts\{имя хоста}.conf
Ищем строку Код:
Options Includes
Заменяем на код:
//Options Includes
Options Follow Sym Links?
Сохраняем
Чтобы все новые хосты были с этими же параметрами:
Открываем файл
T:\home\localhost\admin\apache\vhosts.php
Ищем строку Код:
$new_vhost_entry .= «Options Includes"."\r\n»;
Заменяем на
//$new_vhost_entry .= «Options Includes"."\r\n»;
$new_vhost_entry .= «Options Follow Sym Links?"."\r\n»;
Сохраняем, перезапускаем
После этого вместо Ошибка 403 возникнет Ошибка 400
Шаг 3. Обязателен если сайт задуман как каталог пользователя, для виртуального хоста вопрос не исследован. Каталог пользователя назовем cakephp!
Открываем файл T:\home\users\cakephp!\.htaccess
Для вызова http://localhost/~cakephp!!!/
Добавляем Rewrite Base? /cakephp!!!/
чтобы получилось
<If Module? mod_rewrite.c>
</If Module?>
Сохраняем
Для вызова http://localhost/~cakephp!!!/app/
Открываем файл T:\home\users\cakephp!\add\.htaccess
Добавляем Rewrite Base? /cakephp!/add/
чтобы получилось
<If Module? mod_rewrite.c>
</If Module?
Сохраняем
Для вызова http://localhost/~cakephp!!!/app/webroot/
Открываем файл T:\home\users\cakephp!\add\webroot\.htaccess
Добавляем Rewrite Base? /cakephp!/add/webroot/
чтобы получилось
<If Module? mod_rewrite.c>
</If Module?>
Сохраняем, вызываем в браузере корневой каталог.
Шаг 4. После этого при вызове с любого из трех вышеописанных url появляется белая страница с черно-зелено-желтыми буквами и банером внизу, что собственно и является результатом.
пользуясь случаем даю обьявление ищу работу, писать на gotre_retmandсобакаMyForex.zzn.com
поправьте плз //Options Includes на #Options Includes в 2х местах
<If Module mod_rewrite.c>
Rewrite Engine on
</If Module>
Как только это под Top Server 2.0 прописуешь все виртуал хосты перестают работать -просто чистая страница без каких либо ошибок:(
<If Module mod_rewrite.c>
Rewrite Engine on
</If Module>
Это можно не писать, у меня без него все работает
Важно!
Follow Sym Links надо писать слитно:
Options Follow Sym Links?