在 Ubuntu 上给 PHP 配置 SSL,通常分 两种场景:
这是最常见的情况:PHP 作为客户端访问 SSL 站点。
sudo apt update
sudo apt install ca-certificates
php -m | grep openssl
有输出说明已支持。
$ch = curl_init("https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$response = curl_exec($ch);
curl_close($ch);
如仍报错:
sudo apt install php-curl
sudo systemctl restart apache2 # 或 php-fpm
如果你是用 PHP 搭网站,需要配置 Web 服务器。
sudo apt install apache2
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl restart apache2
使用 Let’s Encrypt:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
sudo apt install nginx php-fpm
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;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
sudo nginx -t
sudo systemctl restart nginx
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout key.pem -out cert.pem -days 365
PHP 忽略验证(仅测试):
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
call to undefined function curl_init() → 没装 php-curlSSL certificate problem → CA 证书缺失如果你能说明:
我可以给你更精确的配置。