PHP 环境搭建(LAMP+WAMP)
PHP 有集成环境 ,在windows 环境有 wampserver(Windows+Apache+Mysql+PHP) ,Linux 有lampserver(Linux+Apache+Mysql+PHP)。
也可以自己搭建。
安装PHP
For Windows
下载地址:https://windows.php.net/download
因为是以Apache作为服务器环境,所以选择Thread Safe(线程安全)版本,下载最新的ZIP包。解压到相对的目录即可
For Linux /Mac
查看原软体仓库
在 CentOS 8 系统中通过以下命令可以查看 dnf 上的 PHP 版本:
dnf module list php
会发现 预设 AppStream 软体仓库(repo,repository)提供的 PHP 版本为 7.3:
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
提示:其中的 [d] 表示预设,[e] 表示已启用,[x] 表示已停用,[i] 表示已安装 而查看 PHP 官网会发现最新版是 8.0,所以我们需要更换其他软体仓库来安装 PHP 8.0。
更换软体仓库并安装最新版 PHP
运行以下命令,启用 Remi 软体仓库:
dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
再次运行 dnf module list php,会发现 Remi 软体仓库中的 PHP 版本信息:
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 [e] common [d], devel, minimal PHP scripting language
运行以下命令,启用 8.0 版本的 PHP:
dnf module enable php:remi-8.0
运行以下命令,安装 PHP:
dnf install php
安装过程会提示需要导入 GPG key,直接输入 y
同意即可:
yum install -y php # centos
dnf install -y php # centos8
apt-get install php # ubuntu
brew install php # for mac
常用命令及配置文件路径
# for linux
# 查看状态
systemctl status php-fpm
# 启动
systemctl start php-fpm
# 停止
systemctl stop php-fpm
# 重启
systemctl restart php-fpm
# 平滑重启
systemctl reload php-fpm
# 查看是否已开机启动
systemctl is-enabled php-fpm
# 设置开机后自动启动
systemctl enable php-fpm
# 关闭开机后自动启动
systemctl disable php-fpm
# for mac 启动|停止|重启
brew services start|stop|restart php
php-fpm.conf
及 php.ini
的完整路径为
/etc/php-fpm.conf
/etc/php.ini
php-fpm.conf
中还引入了 www.conf
,其完整路径为
/etc/php-fpm.d/www.conf
dnf 默认将 PHP 的扩展配置相关文件都放在了如下目录:
/etc/php.d
PHP + Nginx
适配 Nginx
如果 Web 服务器使用 Nginx,则需要修改 php-fpm 的相关配置以支持 Nginx。
编辑 /etc/php-fpm.d/www.conf
,替换以下相关配置:
user = nginx
group = nginx
listen = /run/php-fpm/www.sock
;listen = 9000 ;这里可以是端口
listen.allowed_clients = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
如果使用 ACL 控制系统的文件权限,则将需要打开以下配置,否则将以下配置注释即可:
;listen.acl_users = nginx
;listen.acl_groups = nginx
listen.acl_users 会覆盖 listen.owner,listen.acl_groups 会覆盖 listen.group。
然后运行以下命令,重启 php-fpm 使配置生效:
systemctl reload php-fpm
接下来配置nginx 相关配置
$ vi /etc/nginx/conf.d/test.conf
示例
server {
server_name xxx.com;
location ~ .*\.php$ {
fastcgi_pass 127.0.0.1:9000; #注意这里和php 配置对应
#fastcgi_pass unix:/run/php-fpm/www.sock
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
include fastcgi.conf;
}
fastcgi_pass
对应 /etc/php-fpm.d/www.conf
的 listen
PHP + Apache
安装Apache
For Windows
下载地址:https://www.apachelounge.com/download/
下载 对应的zip包 如 httpd-2.4.54-win64-VS16.zip
解压到相应的目录即可。
进入安装目录下的bin目录,在bin目录下执行安装命令httpd -k install
安装apache 服务
以管理员身份运行命令:
# 安装apache服务
httpd -k install
# 卸载apache服务
httpd -k uninstall
安装成功会看到
Installing the 'Apache2.4' service
The 'Apache2.4' service is successfully installed.
启动服务,Apache2.4
就是服务的名字,默认。
#启动apache服务
net start Apache2.4
#停止apache服务
net stop Apache2.4
也可以用他自带的界面 服务管理管理器启动服务,效果是一样
打开Apache bin目录下的 ApacheMonitor.exe
,点击 Start
在浏览器中输入localhost,看到 It works! 代表安装成功
通常情况你会看到 403
修改安装目录下conf/httpd.conf
找到 Define SRVROOT
,在37行 修改成你的安装目录如:
Define SRVROOT "d:/Programs/Apache24"
关联PHP模块 ,加入以下内容
LoadModule php7_module d:/Programs/php8/php7apache2_4.dll # for php7.x
# or
LoadModule php_module d:/Programs/php8/php8apache2_4.dll # for php8.x
PHPIniDir d:/Programs/php8 #PHP 安装目录
解析模块指令
<!-- <IfModule php7_module> for php7 -->
<IfModule php_module>
DirectoryIndex index.html default.php index.php
AddHandler application/x-httpd-php .php
</IfModule>
然后重启即可。
如果重启失败,预计是vc 库没有安装, 可以安装下
微软VC++运行库合集
For Linux/Mac
yum install -y httpd # centos
dnf install -y httpd # centos8
apt-get install httpd # ubuntu
brew install httpd # for mac
常用命令
# for linux
# 查看状态
systemctl status httpd
# 启动
systemctl start httpd
# 停止
systemctl stop httpd
# 重启
systemctl restart httpd
# 平滑重启
systemctl reload httpd
# 查看是否已开机启动
systemctl is-enabled httpd
# 设置开机后自动启动
systemctl enable httpd
# 关闭开机后自动启动
systemctl disable httpd
# for mac 启动|停止|重启
brew services start|stop|restart httpd
关联PHP模块
修改/etc/httpd/conf/httpd.conf
加入
- LoadModule php7_module "/usr/lib/apache2/modules/libphp7.4.so"
+ LoadModule php_module "/usr/lib/apache2/modules/libphp8.0.so"
- <IfModule php7_module>
+ <IfModule php_module>
DirectoryIndex index.html default.php index.php
AddHandler application/x-httpd-php .php
</IfModule>
Apache多站点配置
有2个项目对应2个路径和2个不同域名如下:
# linux
A项目(www.testa.com) /home/user/www/testA
B项目(www.testb.com) /home/user/www/testB
# windows
A项目(www.testa.com) d:/Projects/test/a
B项目(www.testb.com) d:/Projects/test/b
配置文件位置:
Windows: 安装目录下的 conf/httpd.conf
Linux/Mac :/etc/httpd/conf/httpd.conf
For Windows
修改 httpd.conf
找到 mod_vhost_alias.so
,httpd-vhosts.conf
去掉前面的井号 ,启用模块
LoadModule vhost_alias_module modules/mod_vhost_alias.so #(183行)
Include conf/extra/httpd-vhosts.conf #(510行)
在 conf/extra/httpd-vhosts.conf
加入一下配置
<VirtualHost *:80>
ServerAdmin admin@mytesta.com
DocumentRoot "d:/Projects/test/a"
ServerName mytesta.com
ServerAlias www.mytesta.com
ErrorLog "logs/mytesta.com-error.log"
CustomLog "logs/mytesta.com-access.log" common
<Directory "d:/Projects/test/a">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorDocument 404 https://www.mytesta.com/404.html
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@mytestb.com
DocumentRoot "d:/Projects/test/b"
ServerName mytestb.com
ServerAlias www.mytestb.com
ErrorLog "logs/mytestb-error.log"
CustomLog "logs/mytestb-access.log" common
<Directory "d:/Projects/test/b">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorDocument 404 https://www.mytestb.com/404.html
</Directory>
</VirtualHost>
配置解释
- DocumentRoot:网站目录
- ServerName:网站域名
- Directory节点:定义目录属性
- Options Indexes FollowSymLinks:开启目录访问,显示目录结构,并允许在此目录中使用符号连接
- AllowOverride All:允许定义.htaccess文件
- AllowOverride None:忽略.htaccess文件
- Require all granted:允许所有请求
- ErrorDocument 404 https://www.mytestb.com/404.html:路径匹配时跳转的404界面
重启服务之后,通过不同的域名就可以访问对应的站点
For Linux/Mac
在 /etc/httpd/conf.d
新建 test.conf
,配置和Windows 一样,修改对应目录
<VirtualHost *:80>
ServerAdmin admin@mytesta.com
DocumentRoot "/home/user/www/testA"
ServerName mytesta.com
ServerAlias www.mytesta.com
ErrorLog "logs/mytesta.com-error.log"
CustomLog "logs/mytesta.com-access.log" common
<Directory "/home/user/www/testA">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorDocument 404 https://www.mytesta.com/404.html
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@mytestb.com
DocumentRoot "/home/user/www/testB"
ServerName mytestb.com
ServerAlias www.mytestb.com
ErrorLog "logs/mytestb-error.log"
CustomLog "logs/mytestb-access.log" common
<Directory "/home/user/www/testB">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorDocument 404 https://www.mytestb.com/404.html
</Directory>
</VirtualHost>
然后重启服务即可。
Apache开启HTTPS
<VirtualHost _default_:443>
DocumentRoot "/var/www/html"
ServerName www.chuchur.com
SSLEngine on
SSLCertificateFile /etc/ssl/www.chuchur.com.crt
SSLCertificateKeyFile /etc/ssl/www.chuchur.com.key
SSLCertificateChainFile /etc/ssl/www.chuchur.com.crt
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorDocument 404 https://www.www.chuchur.com/404.html
</Directory>
</VirtualHost>
- SSLEngine on:开启SSL
- SSLCertificateFile:指定证书公钥文件
- SSLCertificateKeyFile:指定证书私钥文件
- SSLCertificateChainFile:指定证书链文件
Apache反向代理(端口转发)
<VirtualHost _default_:443>
ServerName api.chuchur.com
SSLEngine on
SSLCertificateFile /etc/ssl/api/www.chuchur.com.crt
SSLCertificateKeyFile /etc/ssl/www.chuchur.com.key
SSLCertificateChainFile /etc/ssl/www.chuchur.com.crt
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /v2 http://localhost:92/
ProxyPass /v1 http://localhost:91/
ProxyPass / http://localhost:90/
ProxyPassReverse /v2 http://localhost:92/
ProxyPassReverse /v1 http://localhost:91/
ProxyPassReverse / http://localhost:90/
</VirtualHost>
- ProxyPreserveHost On:开启反向代理
- ProxyRequests Off:关闭正向代理
- ProxyPass:设置反向代理路径
- ProxyPassReverse:使Apache自动处理反向代理中的从定向响应,一般和ProxyPass一起用
Apache http重定向到https
<VirtualHost *:80>
ServerName testa.com
#redirect
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
- RewriteEngine on:开启从定向功能
- RewriteCond %{SERVER_PORT} !^443$:从定向条件,端口不是443时重定向,^为开头,$为结束
- RewriteRule:重定向规则,L:表明当前规则是最后一条规则,停止分析以后规则的重写;R:强制外部重定向
PHP + Mysql
For Windows
在PHP的解压目录中找到php.ini-development
直接复制,然后改名为php.ini
修改 php.ini
文件
去掉前面分号,启用模块
extension=bz2
extension=curl
extension=fileinfo
extension=gd
extension=gettext
extension=gmp
extension=intl
extension=mbstring
extension=exif
extension=mysqli
extension=openssl
extension=pdo_firebird
extension=pdo_mysql
;修改成 你的路径
extension_dir = "d:/Programs/php8/ext"
;设置时区
date.timezone = Asia/Shanghai
测试 test.php
<?php
# phpinfo()
$conn=mysqli_connect("localhost","root","123456",'testdb');
if($conn){
echo"ok";
}else{
echo"error";
}
?>
输出OK 即表明配置成功。