На различных форумах часто вижу что люди спрашивают как перенести проект на CakePHP с одного хостинга на другой, или с локальной машины на хостинг.
Чтобы без проблем перенести сайт достаточно всего нескольких простых действий:
- Задаем права 777 для каталога /app/tmp и всех его подкаталогов
- Удаляем все файлы(только файлы, каталоги оставляем) из каталога /app/tmp/cache
- В файле /app/config/core.php находим строчку «Configure::write(‘debug’, 2)» и проверяем чтобы на месте цифры 2 был ноль
- В файле /app/config/database.php меняем имя базы данных и информацию для доступа к ней.(если на новом хостинге эта информация отличается от старой)
В большинстве случаев этих простых шагов будет достаточно и ваш сайт заработает.
Если этого не произошло то можно попробовать сделать следующее:
- В файле /app/config/core.php находим строчку «Configure::write(‘debug’, 0)» и вставляем вместо 0 число 2. Это включит вывод ошибок на сайте
- Смотрим логи которые пишет фреймворк в каталоге /app/tmp/logs/
- Смотрим лог ошибок вебсервера. Его расположение зависит от используемого вебсервера и его настроек
Эти действия позволят вам найти и исправить возможные ошибки.
Так же следует обратить внимание на используемую версию php. В некоторых случаях(к примеру при использовании сторонних классов и библиотек) ваш проект может содержать код который не может быть выполнен установленной версией php.
Способность web-приложения работать не только в корневом каталоге сайта, но и в любом подкаталоге делает его более привлекательным для использования.
Если при использовании CakePHP соблюдать стандарты и для формирования url использовать $html->link() и Router::url() то ссылки в приложении всегда будут с учетом того из какого каталога оно запущенно.
Но, как всегда есть «но». JavaScript ничего не подозревает о том из какого каталога запущено приложение. Из-за этого возникает проблема с url для AJAX запросов. Ниже я приведу один из способов решения этой проблемы.
Первым делом добавим во все layout’ы строчку в секцию head:
<base href="<?php echo Router::url('/'); ?>" />
</base>
Читать далее…
С прошлого обновления прошло полтора месяца. За это время разработчики успели сделать больше 50-ти комитов в репозиторий и закрыть 40 тикетов.
Список самых значительных изменений:
- На главную (по умолчанию) страницу добавлено уведомление о возможно неправильно работающих библиотеках PCRE;
- RequestHandlerComponent теперь автоматически отправляет загаловки content-type и encoding;
- Названия таблиц содержащие пробелы теперь работают корректно;
- Улучшена совестимость с Postgres 9.0;
- MemcacheEngine теперь корректно работает с IPv6 адресами;
- Тэг <cake:nocache> теперь удаляется даже если CacheHelper не загружен;
- SecurityComponent теперь корректно работает с иенами пользователей которые состоят из e-mail адресов;
- Роутер теперь правильно обрабатывает выражения для параметра :action.
Скачать новую версию можно здесь.
Первичные ключи в таблицах обычно имеют целочисленный тип и обычно автоинкрементные. При добавлении новой записи СУБД автоматически подставляет значение этого поля которое на единицу больше чем предыдущее.
В CakePHP существует возможность вместо числа использовать UUID. Для этого всего лишь необходимо для вашего первичного ключа указать тип CHAR(36) или BINARY(36), все остальное CakePHP сделает сам.
Есть такой замечательный php-шаблонизатор Twig которым с недавнего времени занимается автор фреймворка Symfony – Fabien Potencier.
По заверениям авторов этот шаблонизатор один из самых быстрых. Сторонние разработчики тоже подтверждают это.
Но речь в посте пойдет не о прелестях Twig, а о том как его можно «прикрутить» к CakePHP.
Читать далее…
Новая версия включает 77 коммитов в репозиторий и 54 закрытых тикета.
Вот несколько изменений которые могут повлиять на работу вашего приложения:
- Файл схемы БД для плагинов теперь имеет переменную имени класса $PluginSchema, вместо AppSchema;
- Параметры роутинга содержащие внутри «-» теперь работают как ожидается;
- Исправленна ошибка при которой метод SessionComponent::destroy() не всегда удалял данные;
- Улучшенна работа «Scaffold’инга» при работе с темами;
- Метод String::insert() теперь работает лучше с ключами в начале которых содержатся другие ключи;
- DboMysql теперь корректно работает с получением столбцов и параметров таблицы;
- Исправленна ошибка функции setlocale(), связанная с использованием символа «,» ;
- EmailComponent теперь более корректно обрабатывает адреса электронной почты имеющие алиасы.
Скачать новую версию можно из оффициального репозитория.
В CakePHP есть замечательный стандартный контроллер pages который позволяет нам отображать статические страницы просто создав новый файл.
Но очень часто нам требуется иметь как статические страницы так и динамические, содержание которых хранится в БД. Ниже я приведу пример как это можно реализовать используя один контроллер.
Читать далее…
Для начинающих CakePHP программистов часто становится проблемой использовать агрегатные SQL функции такие как MAX, MIN или AVG. В этом посте я расскажу как легко с этим справиться.
Читать далее…
CakePHP поставляется с кучей полезных хелперов и компонентов, которые обеспечивают удобные инструменты для обработки и манипулирования данными. Эти хелперы значимы не только для пользователя фреймворка, но и могут оказать большую помощь кому-нибудь кто пишет PHP приложения не используя CakePHP.
Читать далее…