如果你打算好好开始学一下PHP,可能光是安装个可以学习的PHP环境就已经让你开始怀疑是不是还要继续下去了。因此,作为整个系列的开始,我们就来看几个常用的准备PHP开发环境的方法。

Homebrew

其实,就像Ruby或Python一样,作为一种脚本语言,PHP只需要一个解释器就可以工作了,不需要任何复杂的环境配置。如果你使用MacOS,打开终端,直接执行php -v,应该能看到电脑上已经安装了5.6版本的PHP。因此,如果只是学习PHP语言,甚至你无需额外安装任何环境。

但是,在2015年12月,PHP发布了7.0版,无论是语言自身还是执行性能,这都是PHP历史上最大的一次更新,如果你要从PHP 7开始学习,就需要自己安装了。同样,如果你用MacOS开发,安装PHP解释器最简单的办法,就是Homebrew。打开Homebrew官网,在终端执行下面的命令(注意不需要使用sudo命令):

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrew是MacOS上的包管器,就如同各种Linux发行版上的apt-getyum一样。如果你不熟悉Linux也没关系,记住下面这些常用的Homebrew命令就好了:

  • brew search *package_name*:查询软件包;
  • brew install *package_name*:安装软件包;
  • brew info *package_name*:查看软件包信息;
  • brew uninstall *package_name*:删除软件包;
  • brew update:更新Homebrew自身;
  • brew outdated:查看所有过期的软件包;
  • brew upgrade:更新所有过期的软件包;

为了通过Homebrew安装PHP,我们先执行brew search php71,7.1是当前PHP最新的版本,然后就会看到Homebrew会提示一大堆相关的软件包:

php

当然,这里我已经安装了php7.1,Homebrew会在对应的软件包后面显示一个绿色的对勾。如果你还没装过,直接执行下面的命令就好了:

brew install homebrew/php/php71

根据你的网络情况,可能需要等上一阵子,安装完成之后,重新打开Terminal,执行php -v,看到类似下面的结果,就表示已经安装成功了:

php

这样,严格来说,你就可以可以开始学习PHP了,在你的当前目录新建一个demo.php的文件,添加下面的内容:

<?php

phpinfo();

然后,执行php demo.php,就能在终端看到执行的结果了。因此,这种在命令行里执行PHP脚本的方式,可以帮助你学习绝大多数PHP的语言特性。你只需要像其他脚本语言一样,编写程序,然后在终端执行就好了。这种执行PHP脚本的模式,叫做php-cli。

Homestead

一点关于CGI,FastCGI和PHP-fpm的小知识

但如果要用PHP开发一个Web应用,情况就会稍微复杂一些,这时PHP就需要和一个HTTP服务器配合起来。简单来说,Homestead就是一个方便配置和管理的Web应用开发环境。在了解Homestead的细节之前,我们先来普及一点相关的知识,PHP和Web服务器究竟是什么关系呢?

最早,网页都是静态的(那真的是很早的时候)。所谓静态,就是所有人在所有情况下,同一个地址看到的页面都是一样的,在这种场景里,只需要一个HTTP服务器就搞定了,它获取用户的网络访问请求,在服务器上找到对应的资源,然后返回给用户:

php

但很快,随着应用需求日益复杂,我们需要在不同情况下,给不用的用户显示不同的内容,例如,用户是否登录、登录后的用户名等等。为了能尽可能用统一的方式处理未知多变的需求,1993年美国NCSA为HTTP服务器开发了第一个CGI(Common Gateway Interface)程序,每当HTTP服务器收到一个请求,就新建一个CGI进程,并按照协议的约定传给它一些参数等待它处理,CGI处理完成,并把内容返回给HTTP服务器后,就退出结束了,最终,由HTTP服务器把内容返回给客户端:

php

但可以预见的是,为每个请求创建一个进程的方式非常低效,人们基于CGI的思路,对它的执行模式进行了改进。让所有的CGI进程(CGI worker)统一由一个服务进程(CGI master)管理,这些worker进程时刻处于待命状态,HTTP服务器只把工作派发给CGI的管理进程,进而由其自行分发任务,这就是后来的Fast CGI:

php

理解了这个演进的过程之后,你就会明白,为了通过PHP定制服务器返回的内容,我们当然也得需要一个PHP版的FastCGI程序搭配HTTP服务器,这个FastCGI程序,就是PHP-fpm,HTTP服务器,通常我们会选择Nginx。而Homestead,就是一个集成了PHP-fpm,Nginx以及其他PHP开发相关的工具的环境,它可以大幅简化Web应用开发需要的配置。

安装Homestead

在安装Homestead之前,要先在你的MacOS上安装好Vagrant以及VirtualBox。我们并不会直接和这些工具打交道,稍后,Homestead会在VirtualBox里安装一个Ubuntu Linux,并安装和配置并要的工具和服务。

如果你已经装了VMware或者Parallels,也可以安装Vagrant为这两个产品提供的插件,但是VMware的插件是付费的,Parallels的插件没有得到Vagrant官方支持,并且,Homestead针对VirtualBox的更新也是最频繁的,因此,还是推荐大家使用Vagrant + VirtualBox的组合。

安装好这些工具之后,在Terminal执行下面的命令:

git clone https://github.com/laravel/homestead.git Homestead

这样,当前目录下就会多出一个叫做Homestead目录,进入这个目录之后,执行bash init.sh,Homestead就完成初始化了,这时,当前目录下,就会有一个叫做Homestead.yaml的文件。接下来,所有对Homestead的配置,我们都通过Homestead.yaml来完成。

配置Homestead

在启动前,我们至少要配置以下这些内容:

首先,要把Host上的源代码同步到Homestead虚拟机里,在Homestead.yaml里,添加下面的配置:

folders:
    - map: ~/demo
      to: /var/www/demo

这样,在Host上~/Demo目录的所有内容,都会同步到虚拟机里的/var/www/demo目录。

其次,我们要配置自己网站的地址,继续在Homestead.yaml里,添加下面的内容:

sites:
    - map: demo.app
      to: /var/www/demo

这样,Homestead就会在VirtualBox虚拟机的Nginx配置里,添加一个叫做demo.app站点,这个站点的根目录,会被设置成/var/www/demo。于是,我们在Host上~/demo目录里编写的代码,就可以自动让虚拟机里的Nginx访问了。

最后,我们要让Host可以访问在虚拟机中的站点。打开Host中的/etc/hosts文件,添加下面的配置:

192.168.10.10 demo.app

注意这里的demo.app要和刚才我们添加在Homestead.yaml中站点名称是相同的。

全部配置完成后,把我们之前写的demo.php文件拷贝到~/demo目录。然后在~/Homestead目录执行vagrant up启动虚拟机。启动完成之后,在浏览器里访问在浏览器里访问http://demo.app/demo.php,就可以看到类似下面这样的页面了。

这样,我们就可以在~/demo目录下编写学习代码,然后通过http://demo.app/xxxx.php的方式来观察结果了。

两个Tips

如果你第一次启动Vagrant的时候报错,多半是由于在你Host的~目录中还没有证书文件造成的,判断的依据就是看下~目录中是否存在.ssh/id_rsa.ssh/id_rsa.pub文件,如果没有,按照Github上的指导一步步完成就好了,很简单。生成证书之后,就应该可以正常启动了。

另外,如果你觉得每次到要到Homestead目录中启动Vagrant很麻烦,可以新建一个叫做homestead的文件,然后添加下面的内容:

#!/bin/bash

cd ~/Projects/Homestead && vagrant $*

当然,上面把cd命令后面的目录设置成你的安装目录就好。保存退出之后,执行chmod +x homestead给它添加可执行权限,并把这个脚本文件移动到/usr/local/bin目录。这样,新打开一个终端,我们就可以在任意位置,执行:

  • homestead up启动虚拟机;
  • homestead halt关闭虚拟机;
  • homestead ssh登录到虚拟机;

其他的选择

如果你使用macOS,还可以使用一个叫做Valet的项目,它会把Web应用开发用到的各种服务直接装在Host上。但是,当你部署到生产环境的时候,通常还是会使用Linux,并且,当你把环境搞糟的时候,虚拟机也更容易让你推倒重来,所以,如果没有特别的原因,通常Homestead还是更好的选择。

MAMP

或者,如果你使用Windows,还可以使用一个叫做MAMP的项目,这是一个图形化一键配置工具,让你更容易的配置Web服务器和数据库。

What's next?

以上,就是关于如何配置PHP开发环境的内容,配置好一个环境,是顺利开始学习PHP的一半,而另一半,就是配置好一个得心应手的工具,这就是我们下一节的内容。

所有订阅均支持 12 期免息分期

¥ 59

按月订阅

一个月,观看并下载所有视频内容。初来泊学,这可能是个最好的开始。

开始订阅

¥ 512

按年订阅

一年的时间,让我们一起疯狂地狩猎知识吧。比按月订阅优惠 28%

开始订阅

¥ 1280

泊学终身会员

永久观看和下载所有泊学网站视频,并赠送 100 元商店优惠券。

我要加入
如需帮助,欢迎通过以下方式联系我们