环境搭建
运行PHP可以使用Windows或Linux系统,而服务器也可以整合Apache或Nginx,这些我们都可以根据实际情况自行选择。
LAMP环境
LAMP指Linux,Apache,MySQL(社区版),PHP。LAMP这四个软件,可以说是中小型网站的全套免费解决方案。
这篇笔记记录了在Ubuntu 16.04下,如何搭建LAMP环境。
安装apache2
sudo apt-get install apache2
安装完成后,用浏览器访问http://localhost,可以看到默认网页。网页的默认路径是/var/www/html,开发的时候,我们可以把这个html文件夹的权限变成我们自己的,方便把网页复制进去,或者修改apache的配置文件,使用我们自己的目录作为部署环境。

管理Apache2服务,可以使用systemctl命令,具体请参考Linux系统维护相关章节。
安装php7
Ubuntu16.04的软件源已经不提供php5.x了,因此我们直接安装php7即可。
sudo apt-get install php7.0
sudo apt-get install libapache2-mod-php7.0
第一个是php7相关的解释器,命令行等软件,第二个是apache的php插件。
安装完成后,我们在/var/www/html下创建一个test.php。
<?php
phpinfo();
?>
然后在浏览器里访问http://localhost/test.php,可以看到phpinfo()的输出网页,说明php和apache2执行成功。

安装MySQL
具体请参考数据库系统/MySQL数据库管理系统/MySQL简介和环境搭建。
配置ZendStudio
如果是开发机,除了运行需要的组件,还需要安装IDE、调试工具等。ZendStudio是Zend官方基于Eclipse开发的IDE,功能比较强大。这里假设我们已经完成上述步骤,搭建好了LAMP环境,下面介绍下如何在ZendStudio中配置,使IDE中的项目能够在apache下运行。
apache默认的web root路径是/var/www/html,假设我们打算让工作空间(workspace)在/home/ubuntu/workspace/zendstudio,那么直接把/var/www/html文件夹软链接到/home/ubuntu/workspace,然后重命名为zendstudio就行了,这样省去了改apache配置文件的麻烦。
ln -s /var/www/html /home/ubuntu/workspace/zendstudio
我们还需要给ZendStudio配置一下Apache,点击Run configuration,如图,按照提示添加Apache配置文件路径即可。ZendStudio不会改动配置文件,因此只要确保ZendStudio有读权限。

这样,我们在workspace里修改程序,点击ZendStudio的Run as->PHP Web Application即可打开IDE内置浏览器,或者直接打开我们自己的浏览器进行访问。

配置XDebug
首先需要安装XDebug,Ubuntu下从源中安装php-xdebug包即可。
sudo apt-get install php-xdebug
然后需要改动一下php的配置文件,在/etc/php/7.0/apache2/php.ini中,找到[PHP]段落,然后在其最后加上如下配置:
zend_extension=/usr/lib/php/20151012/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.max_nesting_level=300
重启apache服务器后,XDebug就生效了。接下来,我们需要在ZendStudio中,对XDebug进行配置。如图,双击PHP Servers中我们之前配好的apache服务器,弹出服务器配置对话框后,选择Debugger,然后选择XDebug,再确认下调试端口等配置就可以了。
想要调试PHP文件时,在PHP文件上打好断点,然后使用Debug As功能,调试器就可以正常运行了。

安装火狐浏览器的XDebug插件
前面安装好XDebug后,只能使用ZendStudio内置的浏览器进行调试,很不方便。在firefox扩展中心中,找到The easiest xdebug,如图,进行安装(后面还有Easy XDebug据说也是差不多的插件,但是前面的这个用的人多)。

在火狐浏览器上,点击enable的虫子图标,这样刷新火狐浏览器,XDebug也会开始断点调试,ZendStudio的调试界面也会出现。

不使用的时候,禁用即可。

LNMP环境
现在Nginx已经越来越流行了,尤其是在生产环境中的Linux服务器上。下面简单介绍一些如何在Ubuntu16.04上部署Nginx和PHP。
安装Nginx:
sudo apt-get install nginx
安装php和php-fpm这两个包:
sudo apt-get install php7.0 php7.0-fpm
安装一些其它的扩展,比如基本都会用到的php-mbstring:
sudo apt-get install php7.0-mbstring
修改Nginx配置文件其实非常简单,Nginx已经把需要的配置写好了,只不过给注掉了,没有生效,下面是一个例子:
# server中添加一个默认的index.php文件
index index.html index.php;
# 开启这些注释,使Nginx能够和php-fpm通信
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
WNMP环境搭建
在Linux上开发php固然简单,但是很多入门级开发者并不熟悉Linux,因此在公司的多人项目中,为了大家的开发环境能协调一致,基本都是使用Windows操作系统的。
Windows下有一些WAMP整合包,这里建议不要用,各个生产环境的服务器、PHP、数据库版本都可能各不相同,整合包虽然能直接使用,但是可能造成潜在问题。
这篇笔记记录如何在Windows下搭建开发环境。
参考资料:https://www.mkyong.com/nginx/nginx-php-on-windows/
安装php7
我们去php官网,找到PHP的windows版本,下载线程安全(Thread Safe)版。
- 注1:选择PHP版本时,要注意该版本有对应的XDebug、IDE、各种扩展的支持,最新版本可能存在不支持的情况,学习时也建议下载生产环境用的最多的版本
- 注2:如果使用Apache下载线程安全版,如果使用Nginx下载非线程安全版(该版本不包含Apache的mod支持),这是两种不同的运行机制决定的,Apache使用php模块,Nginx使用
php-fpm和FastCGI协议。
下载好后,配入Path环境变量。
在安装目录,将php.ini-development复制一份,重命名成php.ini。
下载Apache
Apache官方没有提供Windows版本,但是有一些第三方的Windows预编译包,可以在Apache官网找到,我们这里下载的就是Apache2.4版本(Apache似乎停留在这个版本已经很久没更新了)。
在Apache的conf文件夹中,找到httpd.conf,在文件开头加上这些配置:
AddHandler application/x-httpd-php .php
AddType application/x-httpd-php .php .html
LoadModule php7_module "c:/php-ts/php7apache2_4.dll"
PHPIniDir "c:/php-ts"
安装MySQL
具体请参考数据库系统/MySQL数据库管理系统/MySQL简介和环境搭建。
启动Apache
双击执行Apache24/bin/httpd.exe即可。
服务器启动后,访问localhost/test.php,就可以看到php正常工作了。
开发IDE配置
和上一篇基本相同,这里就不多做叙述了。
注意:XDebug的默认(也不算默认,就是大家都这么配)9000端口可能和惠普电脑的一大堆服务冲突,换一个就好了。
WNMP环境
Nginx的使用在Windows下和Linux基本相同,稍微不同的一个是Windows下Nginx配置文件、可执行文件都放在一起,另外Windows下也没有unix domain socket,因此需要配置到php-fpm的IP和端口,Nginx默认带有PHP的配置,只要取消注释就行了,这里就不多介绍了。