Debian环境下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命令行工具(php-cli)、FastCGI进程管理器(php-fpm,用于与Web服务器通信)、MySQL数据库支持(php-mysql)、GD图形库(php-gd)、多字节字符串处理(php-mbstring)等常用扩展。
若需要使用旧版PHP(如PHP 7.4),需先添加Ondřej Surý的第三方软件源(提供安全稳定的旧版本包):
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
然后安装指定版本(以PHP 7.4为例):
sudo apt install php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-gd
PHP的主配置文件分为命令行模式(cli)和Web模式(fpm),路径随版本变化:
/etc/php/<version>/cli/php.ini(如/etc/php/8.2/cli/php.ini)/etc/php/<version>/fpm/php.ini(如/etc/php/8.2/fpm/php.ini)cgi.fix_pathinfo(提升安全性):php.ini文件,找到cgi.fix_pathinfo=1并修改为cgi.fix_pathinfo=0,防止恶意脚本通过路径遍历攻击。php.ini为例):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/<version>/fpm/pool.d/www.conf),调整以下参数:
listen = /run/php/php<version>-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<version>-fpm
Nginx需通过fastcgi协议与PHP-FPM通信,编辑站点配置文件(如/etc/nginx/sites-available/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配置
fastcgi_pass unix:/run/php/php<version>-fpm.sock; # 与PHP-FPM监听地址一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 传递脚本路径
include fastcgi_params; # 包含通用fastcgi参数
}
location ~ /\.ht {
deny all; # 禁止访问.htaccess文件
}
}
测试Nginx配置语法并重启:
sudo nginx -t # 检查配置是否正确
sudo systemctl restart nginx
Apache需启用proxy_fcgi模块并关联PHP-FPM,步骤如下:
sudo a2enmod proxy_fcgi setenvif
/etc/apache2/sites-available/000-default.conf):<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php<version>-fpm.sock|fcgi://localhost"
</FilesMatch>
sudo systemctl restart apache2
在Web服务器根目录(如/var/www/html)创建info.php文件,内容如下:
<?php phpinfo(); ?>
保存后,在浏览器中访问http://your_domain_or_ip/info.php,若看到PHP详细信息页面(包括版本、扩展列表等),则说明配置成功。
通过apt安装扩展(以mysqli为例,用于MySQL数据库连接):
sudo apt install php-mysqli
安装后扩展会自动启用(部分扩展需手动取消php.ini中的注释,如extension=mysqli.so)。
php -m # 命令行查看
或创建phpinfo.php页面查看Web模式下的扩展列表。
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