指南
场景
PHP-FPM 使用
PHP-FPM 用于管理 PHP 进程池,接受 Apache/Nginx 等 Web 服务器的请求。PHP-FPM 提供了更好的 PHP 进程管理方式,可以有效控制内存和进程、可以平滑重载 PHP 配置。
Composer 使用
Web 框架
Symfony
Laravel
CodeIgniter
ThinkPHP
Yii 2
PHP 版本变更(Linux)
PHP 版本升级
在实际使用过程中,会遇到升级 PHP 大版本的情形,如:从 PHP5.5->PHP5.6 或 PHP5.6->PHP7.0等。对于我们提供的LAMP环境来说,升级方法非常简单。
以PHP5.5->PHP5.6为例,具体如下:
- 连接到Linux服务器后,依次执行如下命令:
//首先,禁用当前 PHP55 源
yum-config-manager --disable remi-php55
//然后,启用需升级 PHP56 源
yum-config-manager --enable remi-php56
//最后,升级更新
yum update -y
- 为了确保升级成功,请检查升级后的 PHP 版本
php -v
以上方案也适用于 PHP7.0->PHP7.2
PHP 版本降级
以PHP7.0降级到PHP5.6为例,具体步骤如下:
//禁用当前7.0版本的下载源
yum-config-manager --disable remi-php70
//然后,启用需降级的版本 PHP56 源
yum-config-manager --enable remi-php56
# 卸载PHP7.0
yum remove php-* -y
# 安装主要的PHP模块
yum -y install php-pecl-imagick php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml php-pdo php-bcmath php-pear php-opcache php-ldap php-odbc php-xmlrpc php-json php-mysqlnd php-pdo php-pdo_dblib php-recode php-snmp php-soap php-pecl-zip php-curl php-imap
# 安装其他包
pear install Mail
pear install net_smtp
PHP 版本变更(Windows)
Windows系统下的IIS环境, 安装了多版本的PHP,可以直接修改php配置文件,也可以通过图形化界面操作:
选择需要管理PHP版本的网站,然后打开PHP Manager,点击“Change PHP Version”,重启IIS后生效
注意:PHP版本影响范围为一个网站或网站中的应用程序,没有整个IIS全局PHP版本设置,这样大大的方便了多版本的应用访问。
修改 php 配置
在使用PHP网站的时候,你可能会碰到需要修改:上传文件大小、内存限制等参数。这个时候,就需要修改 PHP 的配置文件。
有两种修改 PHP 配置的方案:
修改 php.ini
修改 php.ini 文件对全局生效。
- 使用 SFTP 工具修改 /etc/php.ini
# 修改文件大小限制,注意数字后面需要带上单位M
post_max_size = 16M
upload_max_filesize = 16M
# 修改超时时间限制
max_execution_time = 90
# 修改内存限制
memory_limit – Minimum: 256M - 保存并 重启 PHP 服务
修改 .htaccess
修改 .htaccess 文件对网站生效。
-
使用 SFTP 工具修改网站根目录下的 .htaccess 文件(没有此文件可以自行创建),增加所需的配置项
# File upload limit
php_value post_max_size = 16M
php_value upload_max_filesize = 16M
# Max Execution Time
php_value max_execution_time = 90
# Memory Limit
php_value memory_limit – Minimum: 256M同 php.ini 一样的参数
-
保存并重启 PHP 服务
将 php-fpm 切换到 mod_php
LAMP 默认使用 php-fpm 服务来解析PHP文件,如果想用 mod_php 解析 PHP 文件,请参照下面步骤:
-
使用 SFTP 工具修改 /etc/httpd/conf.d/php.conf (如果该目录下有php.conf的备份文件,直接复制内容到php.conf)
#
# The following lines prevent .user.ini files from being viewed by Web clients.
#
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
</Files>
#
# Allow php to handle Multiviews
#
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
# mod_php options
<IfModule mod_php7.c>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.(php|phar)$>
SetHandler application/x-httpd-php
</FilesMatch>
#
# Uncomment the following lines to allow PHP to pretty-print .phps
# files as PHP source code:
#
#<FilesMatch \.phps$>
# SetHandler application/x-httpd-php-source
#</FilesMatch>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
#php_value opcache.file_cache "/var/lib/php/opcache"
</IfModule> -
停止 PHP-FPM 服务
故障排除
PHP 不支持 SMTP?
PHP 与 SMTP 相关的问题
-
需要了解你所使用的STMP功能是否调用了PHP软件包(或扩展类)
- php官方提供的mail()类,这个类不支持SMTP验证
- php扩展包-PHPMailer,这个类功能比较全面
-
php_openss 版本过低或者没有安装,php_openssl 的 CA 证书缺失或异常
参数
路径
PHP on Linux 配置文件:/etc/php.ini PHP on Windows 配置文件:C:\websoft9\php-*\php.ini
命令行
主要有 php 和 composer 两个命令行
服务
针对不同的 PHP 环境有不同的服务启停模式:
# PHP-FPM On Linux
sudo systemctl start php
sudo systemctl stop php
sudo systemctl restart php
sudo systemctl status php
# PHP On Docker
sudo docker start php
sudo docker stop php
sudo docker restart php
sudo docker stats php