发布于2026-07-02 阅读(0)
扫一扫,手机访问
Debian环境下配置PHP,这事听起来好像有点技术门槛,其实拆开来看,每一步都有章可循。尤其是在生产环境中,一个稳定、安全、性能到位的PHP运行环境,往往决定了项目后期运维的省心程度。下面就把整个流程梳理一遍,从系统准备到安全加固,尽量说得清楚、讲得实在。

动手安装之前,先把系统包列表更新到最新。这一步看似基础,却经常被忽略,结果安装时因为依赖冲突卡住,反而浪费时间:
sudo apt update
Debian官方仓库里就有当前最新的稳定版PHP(比如PHP 8.2),一条命令就能把基础包和常用扩展都装上:
sudo apt install php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath
这条命令涵盖了命令行工具php-cli、FastCGI进程管理器php-fpm(用于和Web服务器通信)、MySQL数据库支持、GD图形库、多字节字符串处理等常用功能。基本上一个标准的Web应用需要的东西,这里都包含了。
如果项目对旧版本有硬性要求(比如PHP 7.4),就需要先添加Ondřej Surý维护的第三方软件源——这个源提供安全稳定的旧版本包,业内用得比较多:
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpgecho "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.listsudo apt update
然后安装指定版本即可:
sudo apt install php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-gd
PHP的主配置文件分两种场景:命令行模式(cli)和Web模式(fpm)。路径会根据版本不同而变化:
/etc/php//cli/php.ini (比如/etc/php/8.2/cli/php.ini)/etc/php//fpm/php.ini (比如/etc/php/8.2/fpm/php.ini)cgi.fix_pathinfo=1,把它改成cgi.fix_pathinfo=0。这个改动可以防止恶意脚本通过路径遍历攻击。memory_limit = 256M # 脚本最大内存使用量
max_execution_time = 30 # 脚本最大执行时间(秒)
upload_max_filesize = 100M # 上传文件最大大小
post_max_size = 100M # POST数据最大大小
display_errors = On # 生产环境务必设为Off
error_reporting = E_ALL # 报告所有错误
编辑www.conf文件(路径:/etc/php/),主要调几个参数:
listen = /run/php/php-fpm.sock
www-data:user = www-data
group = www-data
pm.max_children = 50 # 最大子进程数
pm.start_servers = 10 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数
pm.max_spare_servers = 20 # 最大空闲子进程数
改完后重启PHP-FPM服务:
sudo systemctl restart php-fpm
Nginx需要通过fastcgi协议和PHP-FPM通信。编辑站点配置文件(比如/etc/nginx/sites-a vailable/default):
server {
listen 80;
server_name your_domain_or_ip;
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/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
测试Nginx配置并重启:
sudo nginx -t
sudo systemctl restart nginx
Apache需要启用proxy_fcgi模块并关联PHP-FPM:
sudo a2enmod proxy_fcgi setenvif
修改虚拟主机配置(比如/etc/apache2/sites-a vailable/000-default.conf):
SetHandler "proxy:unix:/run/php/php-fpm.sock|fcgi://localhost"
重启Apache:
sudo systemctl restart apache2
在Web服务器根目录(比如/var/www/html)创建一个info.php文件,内容就一行:
保存后,在浏览器中访问http://your_domain_or_ip/info.php。如果能看到PHP的详细信息页面——包括版本号、已加载的扩展列表——那说明配置成功了。
用apt直接安装扩展即可。比如安装mysqli扩展(用于MySQL数据库连接):
sudo apt install php-mysqli
大部分扩展安装后会自动启用,少数需要手动在php.ini中取消注释(比如去掉extension=mysqli.so前面的分号)。
php -m
或者在Web模式通过phpinfo.php页面查看扩展列表。
php.ini中通过disable_functions指令禁用危险函数,比如exec、system。ufw允许HTTP(80端口)和HTTPS(443端口)流量:sudo ufw allow 'Apache Full'
# 或者 'Nginx Full'
sudo ufw enable
sudo apt install php-opcache
编辑php.ini,添加以下内容:[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
sudo apt update && sudo apt upgrade
下一篇:如何用nginx配置限制访问
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8