一、Blog案例
本教程将引导您完成一个简单的博客应用程序的创建。 我们将安装CakePHP,创建一个数据库,并创建足够的应用程序逻辑来列出,添加,编辑和删除博客文章。
以下是您需要的:
- 正在运行的Web服务器。 我们将假设您使用Apache,但使用其他服务器的说明应该非常相似。 我们可能需要对服务器配置发挥一点,但是大多数人可以在没有任何配置的情况下启动和运行CakePHP。 确保您有PHP 5.6.0或更高版本,并且PHP中启用了
mbstring
和intl
扩展。 - 数据库服务器。 我们将在本教程中使用MySQL服务器。 您将需要足够了解SQL以创建数据库:CakePHP将从那里采取。绳。 因为我们使用MySQL,还要确保在PHP中启用了
pdo_mysql
。 - 基本PHP知识。
让我们开始吧!
二、获取CakePHP
安装CakePHP的最简单的方法是使用Composer。 Composer是从终端或命令行提示符安装CakePHP的简单方法。 首先,您需要下载并安装Composer,如果您还没有这样做的话。 如果你安装了curl,它就像运行下面一样简单:
curl -s https://getcomposer.org/installer | php
或者,您可以从Composer网站下载composer.phar
。然后只需在安装目录中在终端中键入以下行,即可在bookmarker目录中安装CakePHP应用程序框架:
php composer.phar create-project --prefer-dist cakephp/app blog
如果您已经安装了composer ,请改为输入:
composer self-update && composer create-project --prefer-dist cakephp/app blog
使用Composer的优点是它将自动完成一些重要的设置任务,如设置正确的文件权限和为您创建config / app.php文件。
还有其他方法来安装CakePHP。 如果您不能或不想使用Composer,请查看安装部分。
无论下载和安装CakePHP的方式如何,一旦设置完成,您的目录设置应如下所示:
/cake_install
/bin
/config
/logs
/plugins
/src
/tests
/tmp
/vendor
/webroot
.editorconfig
.gitignore
.htaccess
.travis.yml
composer.json
index.php
phpunit.xml.dist
README.md
现在可能是一个了解CakePHP的目录结构如何工作的好时机:查看CakePHP文件夹结构部分。
二、tmp和日志的目录权限
tmp
和logs
目录需要具有适当的权限,才能由Web服务器写入。 如果您使用Composer进行安装,则应该已经为您完成,并通过“<folder>”上的权限设置确认。 如果你得到一个错误消息或想手动做,最好的方法是找出你的web服务器运行什么用户(<?= `whoami`; ?>
),并将这两个目录的所有权更改为该用户。 你运行的最终命令(在* nix中)可能看起来像这样:
chown -R www-data tmp
chown -R www-data logs
如果由于某些原因,CakePHP无法写入这些目录,则会在未处于生产模式时通过警告通知您。
虽然不推荐,但如果您无法将权限设置为与Web服务器相同,则可以通过运行以下命令简单地设置文件夹的写入权限:
chmod 777 -R tmp
chmod 777 -R logs
三、创建博客数据库
接下来,让我们为我们的博客设置基础MySQL数据库。 如果您还没有这样做,请创建一个空数据库供您在本教程中使用,并使用您选择的名称,例如cake_blog
。 现在,我们将创建一个表来存储我们的文章。 我们还会投入几篇文章用于测试目的。 在数据库中执行以下SQL语句:
/* First, create our articles table: */
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
body TEXT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);
/* Then insert some articles for testing: */
INSERT INTO articles (title,body,created)
VALUES ('The title', 'This is the article body.', NOW());
INSERT INTO articles (title,body,created)
VALUES ('A title once again', 'And the article body follows.', NOW());
INSERT INTO articles (title,body,created)
VALUES ('Title strikes back', 'This is really exciting! Not.', NOW());
表和列名称的选择不是任意的。 如果你遵循CakePHP的数据库命名约定和CakePHP的类命名约定(在CakePHP约定中概述),你将能够利用大量的免费功能,避免配置。 CakePHP是足够灵活的,以适应甚至不一致的遗留数据库模式,但遵守约定将节省您的时间。
查看CakePHP约定了解更多信息,但足以说,命名我们的表'文章'会自动钩到它的文章模型,并有称为“修改”和“创建”字段将自动由CakePHP管理。
四、数据库配置
接下来,让我们告诉CakePHP我们的数据库在哪里,以及如何连接到它。 对许多人来说,这将是第一次和最后一次你需要配置任何东西。
配置应该非常简单:只需将config / app.php文件中的Datasources.default
数组中的值替换为适用于您的设置的值。示例完成的配置数组可能如下所示:
return [
// More configuration above.
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
'username' => 'cake_blog',
'password' => 'AngelF00dC4k3~',
'database' => 'cake_blog',
'encoding' => 'utf8',
'timezone' => 'UTC'
],
],
// More configuration below.
];
保存config / app.php文件后,您应该可以打开浏览器并查看CakePHP欢迎页面。 它还应该告诉您找到了您的数据库连接文件,并且CakePHP可以成功连接到数据库。
CakePHP的默认配置文件的副本可以在config / app.default.php中找到。
五、可选配置
还有一些其他项可以配置。 大多数开发人员完成这些洗衣名单项目,但它们不是本教程所必需的。 一个是定义用于安全散列的自定义字符串(或“salt”)。
安全盐用于生成散列。 如果你使用Composer,这也是在安装过程中为你照顾。 否则,您需要通过编辑config / app.php来更改默认盐值。 没有什么新的价值是什么,只要它不可猜测:
'Security' => [
'salt' => 'something long and containing lots of different values.',
],
六、关于mod_rewrite的注释
有时新用户会遇到mod_rewrite问题。 例如,如果CakePHP欢迎页面看起来有点滑稽(没有图像或CSS样式)。 这可能意味着mod_rewrite在您的系统上不工作。 请参阅网址重写部分,以帮助解决您遇到的任何问题。