在配置PHP前,需先更新系统包列表并升级已安装的包,避免版本冲突:
sudo apt update && sudo apt upgrade -y
这是确保后续安装顺利的基础步骤。
根据项目需求选择PHP版本(如8.2),安装基础包及常用扩展(覆盖数据库、JSON、XML、加密等功能):
sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath -y
php8.2(PHP主程序)、php8.2-cli(命令行模式)、php8.2-fpm(FastCGI进程管理器,推荐用于Nginx)。php8.2-mysql(MySQL数据库支持)、php8.2-gd(图像处理)、php8.2-mbstring(多字节字符串)、php8.2-xml(XML解析)。PHP配置文件分为命令行模式(/etc/php/8.2/cli/php.ini)和Web服务器模式(/etc/php/8.2/fpm/php.ini或/etc/php/8.2/apache2/php.ini),需根据场景调整。常用配置项及示例:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log # 指定错误日志路径
memory_limit = 256M # 脚本最大内存使用量
max_execution_time = 30 # 脚本最大执行时间(秒)
upload_max_filesize = 10M # 允许上传的单个文件最大大小
post_max_size = 12M # POST请求最大数据量(需大于upload_max_filesize)
date.timezone = "Asia/Shanghai" # 设置为中国上海时区
opcache.enable = 1
opcache.memory_consumption = 128 # OPcache内存分配(MB)
opcache.max_accelerated_files = 10000 # 缓存文件数量
修改完成后,重启PHP服务使配置生效。
若使用Nginx作为Web服务器,需通过PHP-FPM处理PHP请求。编辑PHP-FPM池配置文件(/etc/php/8.2/fpm/pool.d/www.conf),调整以下参数:
listen = /run/php/php8.2-fpm.sock # 推荐
; listen = 127.0.0.1:9000 # 或使用TCP端口
www-data)一致:listen.owner = www-data
listen.group = www-data
user = www-data
group = www-data
pm = dynamic
pm.max_children = 50 # 最大子进程数(根据CPU核心数调整,建议=CPU核心数×2+1)
pm.start_servers = 5 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数
pm.max_spare_servers = 10 # 最大空闲子进程数
修改完成后,重启PHP-FPM服务:
sudo systemctl restart php8.2-fpm
编辑Nginx站点配置文件(/etc/nginx/sites-available/default),添加PHP处理逻辑:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 与PHP-FPM的listen指令一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all; # 禁止访问.htaccess文件
}
}
重启Nginx服务:
sudo systemctl restart nginx
启用PHP模块并配置Apache处理PHP文件:
sudo a2enmod php8.2 # 启用PHP模块
sudo systemctl restart apache2
编辑虚拟主机配置文件(/etc/apache2/sites-available/000-default.conf),添加PHP处理指令:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
</FilesMatch>
重启Apache服务:
sudo systemctl restart apache2
php.ini中设置,防止恶意代码执行:disable_functions = exec, system, passthru, shell_exec, popen
open_basedir限制PHP可访问的目录(如/var/www/html),避免越权访问:open_basedir = /var/www/html/
sudo ufw allow 'Nginx Full' # 或 'Apache Full'(根据Web服务器选择)
sudo ufw enable
创建info.php文件(/var/www/html/info.php),内容如下:
<?php
phpinfo();
?>
在浏览器中访问http://your_server_ip/info.php,若看到PHP信息页面,说明配置成功。测试完成后,建议删除该文件以避免泄露敏感信息。