在 Debian 上让 PHP 支持 SSL,通常不是“给 PHP 开一个开关”,而是确保 PHP 使用的通信方式(如 cURL、file_get_contents、邮件、数据库)依赖的 SSL 模块已启用,并且系统/Web 服务器配置了证书。
下面按常见场景说明。
php -m | grep -i ssl
或:
php -i | grep -i openssl
如果看到 openssl,说明 PHP 已支持 SSL。
sudo apt update
sudo apt install php8.2-cli php8.2-common php8.2-openssl
如果你用的是 Apache:
sudo apt install php8.2-apache2
如果你用的是 Nginx(PHP-FPM):
sudo apt install php8.2-fpm
启用 openssl(一般默认已启用):
sudo phpenmod openssl
重启服务:
# Apache
sudo systemctl restart apache2
# Nginx + PHP-FPM
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx
cURL 默认需要 openssl 支持:
php -i | grep -i curl
确认:
SSL: yes
如果 cURL 不支持 SSL:
sudo apt install php8.2-curl
sudo systemctl restart apache2 # 或 php8.2-fpm
测试:
<?php
$ch = curl_init("https://www.baidu.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
var_dump($res);
如果你是想 通过 https:// 访问 PHP 网站,那是 Web 服务器的事。
sudo apt install certbot
sudo apt install python3-certbot-apache
sudo certbot --apache
sudo apt install python3-certbot-nginx
sudo certbot --nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
root /var/www/html;
index index.php index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
确保:
openssl 已启用https$ctx = stream_context_create([
"ssl" => [
"verify_peer" => true,
"verify_peer_name" => true
]
]);
echo file_get_contents("https://example.com", false, $ctx);
如内网自签证书:
"verify_peer" => false
(仅测试环境)
✅ php -m | grep openssl
✅ php -m | grep curl
✅ Web 服务监听 443
✅ 证书有效
✅ 重启服务
如果你能说明:
我可以给你更精确的操作命令。