Mac/Ubuntu上PHP环境配置
1 Mac上自带PHP和Apache环境
1.1 查看版本
我们通过如下两个命令来分别查看php
和apache
的版本:
PHP:
$ php -v
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Apache:
$ apachectl -v
Server version: Apache/2.4.34 (Unix)
Server built: Feb 22 2019 20:20:11
1.2 访问Apache服务
由于Mac自带了Apache服务,那我们在浏览器中输入localhost
不访问该服务,可以看到无法访问。此时我们需要启动Apache服务:
$ apachectl start
服务启动后,再在浏览器中访问时,可以看到It works
,说明服务启动成功!
1.3 Apache服务目录
Apache服务目录默认是/Library/WebServer/Documents
,我们查看目录中的文件:
$ pwd
/Library/WebServer/Documents
$ ls -al
total 80
drwxr-xr-x 7 root wheel 224 7 14 16:17 .
drwxr-xr-x 5 root wheel 160 8 18 2018 ..
-rw-r--r-- 1 root wheel 3726 8 18 2018 PoweredByMacOSX.gif
-rw-r--r-- 1 root wheel 31958 8 18 2018 PoweredByMacOSXLarge.gif
-rw-r--r-- 1 root wheel 45 6 12 2007 index.html.en
-rw-r--r-- 1 root wheel 45 6 12 2007 index.html.en~orig
其中的index.html.en
就是我们在浏览器中访问是看到的It workds
的页面。
1.4 Apache配置文件目录
Apache配置文件目录在/etc/apache2
目录:
$ pwd
/etc/apache2
$ ls -al
total 176
drwxr-xr-x 11 root wheel 352 7 14 16:16 .
drwxr-xr-x 117 root wheel 3744 7 13 22:44 ..
drwxr-xr-x 25 root wheel 800 3 17 00:18 extra
-rw-r--r-- 1 root wheel 21149 7 14 16:16 httpd.conf
-rw-r--r-- 1 root wheel 21150 4 4 2018 httpd.conf.pre-update
-rw-r--r-- 1 root wheel 21150 3 16 22:08 httpd.conf~previous
-rw-r--r-- 1 root wheel 13077 8 18 2018 magic
-rw-r--r-- 1 root wheel 61118 8 18 2018 mime.types
drwxr-xr-x 4 root wheel 128 8 18 2018 original
drwxr-xr-x 3 root wheel 96 8 18 2018 other
drwxr-xr-x 3 root wheel 96 3 17 00:17 users
我们查看httpd.conf
文件,也可以看到配置的访问目录:
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
1.5 配置Apache解析php
我们在/Library/WebServer/Documents
下新建一个文件index.php1
:
<?php
echo "hello php";
然后在浏览器中输入localhost/index.php
,我们发现代码被原样输出并没有得到我们想要的结果,此时我们要在Apache配置文件中配置加载php模块,我们打开配置httpd.conf
,并查找有关php
的信息,可以看到# LoadModule php7_module libexec/apache2/libphp7.so
类似这样的信息(php版本可能和我的不一样),我们打开注释(删除前面的#号),修改后保存并重启apache:
sudo apachectl restart
重启后我们再在浏览器中输入localhost/index.php
并访问,我们可以看上去浏览器输出了hello php了,至此,mac上配置Apache和PHP就完成了!
1.6 优化使服务目录自定义
新建一个自定义的目录,如下这是我自定义的目录:
$ pwd
/Users/xf/phpenv/www
并在该目录下新建一个index.php
文件:
<?php
echo "hello php";
修改Apache配置,使用服务目录指向当前新建的目录,主要是修改httpd.conf
下的下面两处内容:
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
修改为:
DocumentRoot "/Users/xf/phpenv/www"
<Directory "/Users/xf/phpenv/www">
然后重启apache服务:
sudo apachectl restart
然后在浏览器中访问localhost
出现hello php就说明配置成功了!
2 Ubuntu上配置PHP和Apache环境
2.1 安装php和php-cli
安装php-fpm
$ sudo apt-get install php-fpm
安装php-cli
$ sudo apt-get install php-cli
检查php是否安装成功
$ php -v
卸载php-php-cli:
sudo apt-get remove php-fpm php-cli
卸载安装php时的依赖:
sudo apt-get autoremove
2.2 安装apache
- 安装apche:
$ sudo apt-get install apache2
启动apache:
$ sudo systemctl start apache2
在浏览器中输入localhost
访问,访问目录是/var/www/html
。
- 卸载apache:
$ sudo apt-get remove apache2
卸载安装apache2时自动安装的其他依赖:
sudo apt-get autoremove
删除apache2配置文件:
sudo apt-get purge apache2
2.3 配置使用apache支持php
在/etc/www/thml/
中新建一个test.php
文件,并输入以下内容:
<?php
echo 'hello php';
在浏览器中访问localhost/test.php
,可以看到代码被原样输出。
安装模块让apache支持php:
sudo apt-get install libapache2-mod-php
配置好后再访问!
2.4 在安装过程中遇到了问题
$ sudo apt-get install libapache2-mod-php7.2 -y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
建议安装:
php-pear
下列【新】软件包将被安装:
libapache2-mod-php7.2
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 63 个软件包未被升级。
需要下载 0 B/1,388 kB 的归档。
解压缩后会消耗 4,900 kB 的额外空间。
正在选中未选择的软件包 libapache2-mod-php7.2。
(正在读取数据库 ... 系统当前共安装有 193101 个文件和目录。)
准备解压 .../libapache2-mod-php7.2_7.2.19-0ubuntu0.19.04.1_amd64.deb ...
正在解压 libapache2-mod-php7.2 (7.2.19-0ubuntu0.19.04.1) ...
正在设置 libapache2-mod-php7.2 (7.2.19-0ubuntu0.19.04.1) ...
dpkg: 处理软件包 libapache2-mod-php7.2 (--configure)时出错:
已安装 libapache2-mod-php7.2 软件包 post-installation 脚本 子进程返回错误状态 1
在处理时有错误发生:
libapache2-mod-php7.2
E: Sub-process /usr/bin/dpkg returned an error code (1)
执行如下操作:
sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old
sudo mkdir /var/lib/dpkg/info
sudo apt-get update
sudo apt-get -f install
sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old
sudo rm -rf /var/lib/dpkg/info
3 修改MySQL8.0配置
通过PHP连接到MySQL8.0会连不上,错误信息大致是The server requested authentication method unknown to the client
,我们通过如下方式来修改MySQL的配置:
# 连接到MySQL
$ mysql -uroot -p
Enter password:
# ......
# 修改认证方式
mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.00 sec)
此时再通过PHP程序连接MySQL就不会报错了!