Linux PHP如何配置服务器环境
小樊
37
2025-12-14 06:52:21
Linux PHP 服务器环境配置指南
一 环境选型与准备
- 常见组合:
- LAMP:Linux + Apache + MySQL/MariaDB + PHP
- LNMP:Linux + Nginx + MySQL/MariaDB + PHP-FPM
- 准备与原则:
- 以发行版官方仓库为主,必要时使用可信第三方仓库(如 Remi)获取新版本 PHP。
- 安装常用扩展:php-cli php-fpm php-mysqlnd php-gd php-curl php-xml php-mbstring php-zip。
- 统一 PHP 版本:CLI 与 FPM 版本保持一致,避免兼容性问题。
- 防火墙与安全组放行 HTTP/HTTPS(80/443) 端口。
二 安装与基础配置
- Ubuntu/Debian 示例(Apache 模块方式)
- 安装组件
- sudo apt update
- sudo apt install apache2 libapache2-mod-php php php-cli php-fpm php-mysqlnd php-gd php-curl php-xml php-mbstring php-zip
- 启用索引与模块
- sudo a2enmod php**{version}**
- 可选:将 index.php 置于 DirectoryIndex 首位(/etc/apache2/mods-enabled/dir.conf)
- 启动服务
- sudo systemctl enable --now apache2
- CentOS/RHEL 7 示例(Nginx + PHP-FPM)
- 安装 EPEL 与 Remi 仓库,启用所需 PHP 版本
- sudo yum install -y epel-release yum-utils
- sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
- 使用 yum-config-manager 启用对应 php 版本仓库
- 安装组件
- sudo yum install -y nginx mariadb-server mariadb php php-fpm php-mysqlnd php-gd php-curl php-xml php-mbstring php-zip
- 启动服务
- sudo systemctl enable --now nginx mariadb php-fpm
- 验证
- php -v
- 查看服务状态:systemctl status apache2|nginx|php-fpm
- 数据库安全初始化:sudo mysql_secure_installation(仅首次)
三 Web 服务器与 PHP 集成
- Nginx + PHP-FPM(推荐)
- 典型 server 配置片段:
- location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php**{version}**-fpm.sock; # 或 127.0.0.1:9000
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
- 检查并重载:
- sudo nginx -t && sudo systemctl reload nginx
- Apache + mod_php
- 启用模块与默认站点:
- sudo a2enmod php**{version}**
- 可选:a2ensite 你的站点配置并禁用默认站点
- 重载:
- sudo systemctl reload apache2
- 路径与版本提示
- FPM 套接字常见路径:/var/run/php/php{version}-fpm.sock(Debian/Ubuntu),或 /run/php/php{version}-fpm.sock(部分发行版)
- 站点根目录常见:/var/www/html(Apache),/usr/share/nginx/html(Nginx)
四 PHP 核心配置与性能优化
- 定位 php.ini
- php -i | grep “Loaded Configuration File”
- 或创建 phpinfo.php 查看 “Loaded Configuration File”
- 常用运行时参数(按业务调整)
- memory_limit = 256M
- max_execution_time = 120
- upload_max_filesize = 20M
- post_max_size = 20M
- date.timezone = Asia/Shanghai
- 性能与安全
- 启用 OPcache(建议生产环境开启)
- opcache.enable=1
- opcache.memory_consumption=128
- opcache.interned_strings_buffer=8
- opcache.max_accelerated_files=4000
- opcache.revalidate_freq=60
- 错误与日志
- display_errors = Off(生产)
- log_errors = On
- error_log = /var/log/php_errors.log
- error_reporting = E_ALL & ~E_NOTICE
- 安全加固
- 禁用危险函数:disable_functions = exec,shell_exec,passthru,system,proc_open,proc_close,openlog,syslog,readlink,symlink,popen,dl,leak,popepassthru,stream_socket_server,chroot,chgrp,chown,escapeshellcmd,escapeshellarg
- 路径隔离:open_basedir = /var/www/:/tmp/
- 使配置生效
- Apache:sudo systemctl reload apache2
- PHP-FPM:sudo systemctl reload php**{version}**-fpm
五 验证与常见问题
- 验证步骤
- 创建测试文件:echo “” | sudo tee /var/www/html/info.php
- 访问:http://服务器IP/info.php(生产环境完成后请删除该文件)
- 常见问题排查
- 502/504:检查 PHP-FPM 是否运行、监听地址与 Nginx 配置一致、套接字权限与属主正确
- 空白页:开启错误日志(display_errors=Off; log_errors=On),查看 error_log
- 权限问题:确保 DocumentRoot 与 /tmp 对 www-data 或 nginx 用户可读写
- 扩展缺失:安装对应 php-{extension} 包并重启 PHP-FPM/Web 服务
- 版本不一致:确认 CLI 与 FPM 使用同一 PHP 版本(php -v 与 php-fpm -v)