安装

CakePHP是简单,易于安装的。最低要求仅需要一个web服务器和一份CAKEPHP的副本代码,。本篇文章将主要介绍Apache的设置(安装和设置非常简单)。CakePHP能运行在各种web服务器上,如nginx LightHTTPD IIS

要求

  1. http服务器 ,如Apache,最好拥有mod_rewrite权限,但不是必须的
  2. PHP 5.6.0或以上(包括PHP 7.2)
  3. mbstring PHP扩展
  4. intl PHP扩展
  5. simplexml PHP扩展

XAMPPWAMP中,mbstring 扩展是默认工作的,在XAMPP中,已经包含了intl扩展,你需要在php.ini (php安装目录下)文件中找到extension=php_intl.dll行,然后取消前面的注释,在XAMPP控制面板中重启服务器即可工作。在WAMP中,默认情况下intl扩展是激活的但是不工作,要使其正常工作,你需要到PHP安装目录下(默认目录 C:\wamp\bin\php\php{version}),复制icu开头的dll文件(icu*.dll)到Apachebin目录下(默认地址C:\wamp\bin\apache\apache{version}\bin),然后重启所有服务,它就能正常工作了
大多数应用都将使用一个数据库引擎CakePHP支持多个数据库存储引擎

  • MySQL(5.5.3或以上)
  • MariaDB(5.5或以上)
  • PostgreSQL
  • Microsoft SQL Server(2008或更高版本)
  • SQLite 3
    以上数据库的内置驱动程序都需要PDO。请确保安装了正确的PDO扩展

安装 CakePHP

在开始安装之前,请确保你的php版本是最新的

php -v

你最低也应当安装了 PHP 5.6.0 (CLI) 或更高版本。你的 web 服务器的 PHP 版本必须也是 5.6.0 或更高版本,并且应当最好和命令行(CLI)的 PHP 版本相同

安装 Composer

CakePHP使用依赖项管理工具Composer作为官方支持的安装方法

  • 在Linux和macOS上安装Composer
  1. 按照 official Composer documentation 描述的那样运行安装脚本,并遵照指示安装 Composer
  2. 运行下面的命令,把 composer.phar 文件移动到 path 环境变量中的一个目录中:

    mv composer.phar /usr/local/bin/composer

  • 在 Windows 上安装 Composer
    对于 Windows 系统,你可以从 这里 下载 Composer 的 Windows 安装程序。 Composer 的 Windows 安装程序更多的指示可以参阅 这里 的 README。

创建 CakePHP 项目

现在您已经下载并安装了Composer,现在我们要在my_app_name文件夹中创建一个新的CakePHP应用程序,只需要运行以下命令

php composer.phar create-project --prefer-dist cakephp/app my_app_name

如果你的 Composer 是全局安装的话,执行以下命令:

composer self-update && composer create-project --prefer-dist cakephp/app my_app_name

当 Composer完成了应用程序框架和核心CakePHP库的下载,你就通过Composer安装一个完整的CakePHP应用程序。一定要保留好composer.jsoncomposer.lock和源代码

现在可以访问安装CakePHP应用程序的路径,并查看默认主页。要更改此页面的内容,请编辑 src/Template/Pages/home.ctp。

尽管composer是官方推荐的安装方法,Github上有CakePHP预安装的下载,这些下载包含安装了所有供应商包的应用程序框架,也包括composer.phar,这样你就拥有更深层使用的基础。

CakePHP的最新变化

默认情况下,这是您的应用程序composer.json的样子:

"require": {"cakephp/cakephp": "3.7.*"
}

每次运行 php composer.phar update命令,你将收到小版本的补丁。你可以替换成 "^3.7"去接受 3.x 的最新的稳定分支。

"require": {"cakephp/cakephp": "^3.7"
}

如果您想了解CakePHP中最新的未发布的更改,请将dev-master指定为应用程序的Composer.json中的包版本:

"require": {"cakephp/cakephp": "dev-master"
}

注意,不推荐使用未发布的版本,因为当下一个主要版本发布时,你的程序可能会崩溃。另外,Composer不会缓存开发分支,因此会持续减缓Composer的安装和更新

使用Oven安装

另一种快速安装CakePHP的方法就是Oven,
它是一个简单的PHP脚本,它能检查必要的系统需求,安装CakePHP应用程序框架,并设置开发环境。
安装完成后,您的CakePHP应用程序就可以运行了!

重点:这不是一个部署脚本,它的目的是帮助开发人员第一次安装CakePHP并快速设置开发环境。生产环境应该考虑其他几个因素,比如文件权限、虚拟主机配置等。

权限

CakePHP将tmp目录用于许多不同的操作,例如 模型描述,缓存视图,会话信息。logs目录用于默认的FileLog引擎写入日志文件。
因此,请确保CakePHP安装中的logstmp及其所有子目录都可由web服务器用户写入。Composer的安装过程使tmp及其子文件夹具有全局可写性,以便快速启动和运行,但是您可以更新权限以获得更好的安全性,并使它们仅对web服务器用户可写。
一个常见的问题是logstmp目录以及子目录必须由web服务器和命令行用户都可写。在UNIX系统上,如果web服务器用户与命令行用户不同,可以在项目中从应用程序目录运行以下命令一次,以确保权限设置正确:

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
setfacl -R -m u:${HTTPDUSER}:rwx tmp
setfacl -R -d -m u:${HTTPDUSER}:rwx tmp
setfacl -R -m u:${HTTPDUSER}:rwx logs
setfacl -R -d -m u:${HTTPDUSER}:rwx logs

为了使用CakePHP控制台工具,您需要确保 bin/cake 文件是可执行的。在*nix或MacOS上,您可以执行:

chmod +x bin/cake

在Windows上,.bat文件应该已经可以执行.如果您使用的是Vagrant或任何其他虚拟化环境,共享文件将于执行权限共享(请参阅您的虚拟环境中有关如何实现此操作的文档)。
不管什么原因,您无法更改bin/cake文件的权限,您可以使用以下命令运行CakePHP控制台:

php bin/cake.php

开发服务器

开发环境的安装对CakePhp来说是很快的,我们使用CakePHP的控制台运行PHP的内置web服务器,使你的应用就可以使用http://host:port访问。你只需在应用目录执行以下命令.

bin/cake server

默认情况下,在不提供任何参数的情况下,你可以通过http://localhost:8765/打开你的应用程序。

如果与本地主机(localhost)或者8765端口冲突的话,你可以通过CakePHP控制台让web服务器运行在特定的主机或者端口上。你可以使以下命令:

bin/cake server -H 192.168.13.37 -p 5673

你可以通过http://192.168.13.37:5673/访问你应用程序。
就是这样!您的CakePHP应用程序已经启动并运行,无需配置web服务器

如果服务器无法从其他主机访问,请尝试bin/cake server -H 0.0.0.0

开发服务器不应该在生产环境中使用。它只是作为一个基本的开发服务器

如果你想将你的应用发布到正式web服务器,您应该将CakePHP安装文件(包括隐藏的文件)移动到web服务器的文档根目录中。然后,将浏览器指向web服务器的文档根目录并查看应用的运行状况。

生产安装

生产安装是CakePHP更加灵活方便的安装方式,使用这种方法可以把整个域名当成一个CakePHP应用。这个例子将帮助你将CakePHP安装在文件系统任何地方并使其能在http://www.example.com访问。注意,此安装可能需要更改Apache web服务器上的DocumentRoot的权限。

按照上述方法将应用程序安装到你选择的目录中后,假设你选了 /cake_install进行安装。你的产品的目录应该是这样的

/cake_install/bin/config/logs/plugins/src/tests/tmp/vendor/webroot/ (this directory is set as DocumentRoot).gitignore.htaccess.travis.ymlcomposer.jsonindex.phpphpunit.xml.distREADME.md

使用Apache开发的人员,应将DocumentRoot指向:

DocumentRoot /cake_install/webroot

如果您的web服务器配置正确,现在应该可以在http://www.example.com上访问CakePHP应用程序。

Fire It Up

好的,让我们看看CakePHP的实际应用。根据你的使用的设置,应该将浏览器指向http://example.com/或http://localhost:8765/。此时,您将看到CakePHP的默认主页,以及一条告诉您当前数据库连接状态的消息。
恭喜你!您已经创建号您的第一个CakePHP应用程序。

URL 重写

Apache

通常情况下, CakePHP 用来和 mod_rewrite 一起使用的,但是我们的确注意到一些用户很难使所有东西顺利地运行在他们的系统上。
这里有些方法让它正常的运行。首先,查看 httpd.conf文件。(确保你是在修 改系统级的 httpd.conf,而不是用户级或者站点级的 httpd.conf)。
这些文件随(发行版本的不同和 Apache 版本的不同)而有所变化。你也可以查看 http://wiki.apache.org/httpd/DistrosDefaultLayout 以获取更多的信息。

  1. 确保**.htaccess**允许覆盖,并且在正确 DocumentRoot 设置 AllowOverride 为 All。你的修改应类似于:
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
<Directory />Options FollowSymLinksAllowOverride All
#    Order deny,allow
#    Deny from all
</Directory>
  1. 确保正确加载了 mod_rewrite。你应当看到类似于下面的文字:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

在很多系统中,默认情况下这是被注释掉的,因此你就只需去掉开头的#符号。
做完修改后,重启 Apache,确保设置生效。
验证你的 .htaccess 文件的确在正确的目录中。某些操作系统认为以’.'开头的文件是隐 藏的,因此不会拷贝这些文件。

  1. 确保你的 CakePHP 拷贝来自官网的下载或者我们的 Git 库,并且通过检查.htaccess 文件来确保正确解压。
    CakePHP app 目录(bake 会把它拷贝到你的应用程序的最高一级目录):

     <IfModule mod_rewrite.c>RewriteEngine onRewriteRule    ^$    webroot/    [L]RewriteRule    (.*) webroot/$1    [L]</IfModule>
    

    CakePHP 的 webroot 目录(bake 会把它拷贝到你的应用程序的 webroot 目录):

     <IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^ index.php [L]
    </IfModule>
    

    如果你的 CakePHP 站点仍有 mod_rewrite 的问题,您可能想尝试修改虚拟主机的设置,在 Ubuntu 系统中,编辑文件/etc/apache2/sites-available/default (其 位置取决于发行版本)。在该文件中,确保 AllowOverride None 改为 AllowOverride All ,所以就是:

    <Directory />Options FollowSymLinksAllowOverride All
    </Directory>
    <Directory /var/www>Options FollowSymLinksAllowOverride AllOrder Allow,DenyAllow from all
    </Directory>
    

在 macOS 中,另一个方法是使用 virtualhostx 工具来创建一个虚拟主机 ,指向你的目录。
对于许多托管服务(GoDaddy, 1and1),你的 web 服务器实际上是从一个已经使用 mod_rewrite 的用户目录提供的.如果你把 CakePHP 安装到一个用户目录( http://example.com/~username/cakephp/),或者任何已经使用 mod_rewrite 的网址结构,你需要在 CakePHP 使用的 .htaccess 文件(/.htaccess、/webroot/.htaccess)中添加 RewriteBase 语句。
这可以加在 RewriteEngine 指令所在的同一个小节中,例如,你的 webroot 的 .htaccess 文件可以象这样:

<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /path/to/appRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^ index.php [L]
</IfModule>

这些改动的细节取决于你的设置,而且可能包含与 CakePHP 无关的其它东西。更多信息 请参考 Apache 的在线文档。

  1. (可选) 要改善生产环境的设置,你应当让 CakePHP 避免解析非法的资源。可以把 webroot 的 .htaccess 文件修改成象下面这样:
<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /path/to/app/RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_URI} !^/(webroot/)?(img|css|js)/(.*)$RewriteRule ^ index.php [L]
</IfModule>

上面的设置就会简单地避免错误的资源被送往 index.php,而显示你的 web 服务器的 404页面。
另外,你可以创建一个匹配的 HTML 404 页面,或者添加 ErrorDocument 指令来使 用 CakePHP 内置的 404 页面:

ErrorDocument 404 /404-not-found

nginx 的友好地址

nginx 不像 Apache 那样使用 .htaccess 文件,所以必须在站点的配置中创建这些重写网址。这通常可以在(/etc/nginx/sites-available/your_virtual_host_conf_file)中找到。
根据你的设置,你要修改这个(配置),不过至少你要让 PHP 作为 FastCGI 实例来运行,以下配置将请求重定向到webroot/index.php:

location / {try_files $uri $uri/ /index.php?$args;
}

服务器配置示例如下:

server {listen   80;listen   [::]:80;server_name www.example.com;return 301 http://example.com$request_uri;
}server {listen   80;listen   [::]:80;server_name example.com;root   /var/www/example.com/public/webroot;index  index.php;access_log /var/www/example.com/log/access.log;error_log /var/www/example.com/log/error.log;location / {try_files $uri $uri/ /index.php?$args;}location ~ \.php$ {try_files $uri =404;include fastcgi_params;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_intercept_errors on;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}
}

最新的 PHP-FPM 配置设置为监听 unix php-fpm 套接字(socket),而不是 127.0.0.1 地址的 9000 TCP 端口。如果你使用上面的配置,遇到 502 bad gateway 的错误,尝试 把 fastcgi_pass 从 TCP 端口改为套接字路径(例如:fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;)。

IIS7 的网址重写 (Windows 主机)

IIS7 本身不支持 .htaccess 文件。虽然有插件(add-on)可增加这种支持,但是也可以把 htaccess 规则导入 IIS,来使用 CakePHP 的原生重写。为此,按照如下步骤进行:

  1. 使用 Microsoft 的 Web Platform Installer 来安装 Rewrite Module 2.0 或者直接下载(32位 / 64位)。
  2. 在 CakePHP 根目录创建一个文件web.config文件。
  3. 使用记事本(Notepad)或任何对 XML 安全的编辑器,拷贝下面的代码到新建的 web.config 文件中
<?xml version="1.0" encoding="UTF-8"?>
<configuration><system.webServer><rewrite><rules><rule name="Exclude direct access to webroot/*"stopProcessing="true"><match url="^webroot/(.*)$" ignoreCase="false" /><action type="None" /></rule><rule name="Rewrite routed access to assets(img, css, files, js, favicon)"stopProcessing="true"><match url="^(font|img|css|files|js|favicon.ico)(.*)$" /><action type="Rewrite" url="webroot/{R:1}{R:2}"appendQueryString="false" /></rule><rule name="Rewrite requested file/folder to index.php"stopProcessing="true"><match url="^(.*)$" ignoreCase="false" /><action type="Rewrite" url="index.php"appendQueryString="true" /></rule></rules></rewrite></system.webServer>
</configuration>

一旦创建了含有正确的 IIS 方式的重写规则的 web.config 文件,CakePHP 的链接、CSS、 JavaScript和路由就应该可以正常工作了。

不能使用网址重写

如果您不想或者不能让mod_rewrite(或者其他兼容的模块)在您的服务器上运行,那么您需要使用CakePHP内置的url。在config /app.php,取消注释这行,看起来像这样:

'App' => [// ...// 'baseUrl' => env('SCRIPT_NAME'),
]

同时删除这些 .htaccess 文件

/.htaccess
webroot/.htaccess

这将使你的url看起来像www.example.com/index.php/controllername/actionname/param 而不是 www.example.com/controllername/actionname/param

CAKEPHP3.7安装相关推荐

  1. oh-my-zsh国内镜像安装和更新方法

    什么是Oh My Zsh Oh My Zsh是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式.它基于zsh命令行,提供了主题配置,插件机制,已经内置的便捷操作.给我们 ...

  2. linux环境下nacos的安装+启动,阿里云服务器安装nacos

    nacos安装+启动(linux环境): 基础:安装java环境 官网下载压缩包:如 nacos-server-1.2.1.tar.gz 放在自定义目录下 # 解压 tar -xvf nacos-se ...

  3. Alibaba Cloud Linux 2.1903 LTS 64位服务器yum源下载404,Alibaba Cloud Linux 2实例中使用docker-ce、epel等YUM源安装软件失败

    [Alibaba Cloud Linux 2.1903 LTS 64位]服务器yum源下载404 failure: repodata/repomd.xml from docker-ce-stable: ...

  4. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  5. 在docker上安装部署tomcat项目 超简单,拿来主义

    在docker中部署tomcat,非常简单,而且省去了手动安装jdk等步骤,只需要将war包复制在容器tomcat实例中的webapps下面即可.以下将详细讲解流程: 在windows中打好包以后用w ...

  6. docker一步安装mysql,docker的魅力就在于此

    正常来说,使用docker安装东西的步骤是serach它有没有,然后pull它 这里其实只要一步(如果你没有安装过.没有端口占用等问题的话!!) $ docker run -d -p 3306:330 ...

  7. Linux下tomcat的安装与卸载以及配置(超简单)

    无敌简单的几步 1.安装 //首先你需要下载好tomcat包 sudo tar -xvzf apache-tomcat-7.0.85.tar.gz(这里是包名) -C 你要放的位置 2.卸载 rm - ...

  8. Linux下安装Java8

    Linux(ubuntu)下Java8安装 1.下载jdk8 这个看大家了,linux版本的就可以 2.创建jvm文件夹 在根目录下创建名为jvm的文件夹(在哪里创建看个人) $ sudo mkdir ...

  9. Linux安装mysql,一步到位!

    今天在腾讯云上面买了一个服务器,想要把自己的项目部署一下,就要安装mysql,以下是我的安装步骤,在网上有很多人把install敲错了,还有的少-get,种种错误试完之后,我决定发一篇 sudo ap ...

最新文章

  1. HDU 6229 Wandering Robots 找规律+离散化
  2. Settings(系统设置app)
  3. Visual Studio 2013开发 mini-filter driver step by step (5) - 读写文件
  4. js获取下月时间_js 获取日期时间段
  5. 如何定义开发完成?(Definition of Done)
  6. Unity脚本生命周期与执行顺序
  7. Redis详解(三)
  8. 00600 ora 关闭oracle_Oracle集群高可用故障切换
  9. mysql int类型为null_MySQL INT类型可以为非零NULL吗?
  10. 在vue中使用javascript动态修改字符串中某段文字的颜色
  11. JS学习3-Js运算符优先级
  12. 安卓10自带录屏_荣耀v10怎么录屏?荣耀v10三种录屏方法
  13. Linux沙箱技术介绍
  14. 中标麒麟linux系统安装打印机_中标麒麟Linux操作系统和理光打印机完成互相兼容认证...
  15. linux从源码编译cairo,Windows 下编译 cairo 二维图形库
  16. Zigbee,esp8266(wifi),蓝牙协议三种通信方式
  17. Altium Designer基础PCB布局布线
  18. java抢红包算法_Java抢红包的红包生成算法
  19. 彻底解决 Windows 下 PHP 响应异常缓慢的问题
  20. 理财产品信息管理系统项目代码分享

热门文章

  1. m3u8手机批量转码_阿里云视频转码批量提交(mp4 to m3u8)
  2. 从事云计算方面的工作,云计算常见的职位和所需技能
  3. 专利快速预审的办理流程
  4. nCode:GlyphWorks案例教程一
  5. 物联卡与手机卡区别,多种对比让你了解两者不同之外-搜卡之家
  6. c语言中字符指针加加操作,C语言 指针操作练习
  7. PMBOK(第六版) 学习笔记 ——《第六章 项目进度管理》
  8. (解决方法)netcat信任证书未找到
  9. 总市值,流通股本,总金额有什么关系?大盘指数为什么不是多有股票指数之和
  10. mysql常用的两种数据库引擎_Mysql数据库常用两种引擎的介绍