温馨提示×

ubuntu php怎样配置ssl

小樊
41
2026-09-28 13:33:01
栏目: 云计算

在 Ubuntu 上给 PHP 配置 SSL,通常分 两种场景:


一、PHP 访问 HTTPS 地址(curl / file_get_contents)

这是最常见的情况:PHP 作为客户端访问 SSL 站点。

1. 安装 CA 证书

sudo apt update
sudo apt install ca-certificates

2. 确认 PHP 已启用 SSL 支持

php -m | grep openssl

有输出说明已支持。

3. curl 使用 SSL(推荐)

$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 网站启用 HTTPS(Web 服务器 SSL)

如果你是用 PHP 搭网站,需要配置 Web 服务器。

方案 1:Apache + PHP + SSL

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

方案 2:Nginx + PHP-FPM + SSL

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

三、本地开发自签名 SSL(测试用)

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-curl
  • SSL certificate problem → CA 证书缺失
  • PHP CLI 与 Web 使用不同 php.ini

如果你能说明:

  • 用的是 Apache / Nginx
  • 是 访问 HTTPS 还是 提供 HTTPS
  • Ubuntu 和 PHP 版本

我可以给你更精确的配置。

0 踩