赞片CMSOpenSSL
照着做完,你能让赞片CMS 的采集、支付回调、远程图片下载在 HTTPS 环境下不再报错,并搞清楚 OpenSSL 到底卡在哪一层。
赞片CMS 是 PHP 写的影视站点程序,装完之后最容易出问题的地方就是「采集」。症状通常长这样:后台点「资源采集 → 一键采集」,页面转两秒,弹出一行红字 cURL error 60: SSL certificate problem: unable to get local issuer certificate;或者安装向导第一步就提示「您的 PHP 环境未开启 openssl 扩展」。这两个报错看着都是 OpenSSL,其实一个缺扩展,一个缺证书,得分开治。
第一步:确认到底是扩展没开还是证书没配
先定位问题,不要上来就瞎改配置。在网站根目录建一个 check.php,内容写 <?php phpinfo();,浏览器访问 http://你的域名/check.php,Ctrl+F 搜 openssl。
- 搜不到
OpenSSL support这一节 → 扩展没装,走第二步。 - 搜得到,且
OpenSSL support后面是enabled→ 扩展没问题,走第四步配证书。
命令行更直接:php -r "var_dump(extension_loaded('openssl'));",返回 bool(true) 就是正常。
注意:查完立刻删掉
check.php。phpinfo 会泄露服务器路径、数据库账号、PHP 版本,被人扫到就是安全事故。
第二步:装 OpenSSL 扩展(宝塔面板用户)
这一步的目标是让 PHP 加载 openssl.so / php_openssl.dll,做完后第一步的检测会返回 enabled。
宝塔面板路径:**软件商店 → 已安装 → 找到 PHP-7.4 → 右侧「设置」→ 顶部「安装扩展」→ 在列表里找到 openssl → 点「安装」**。装完宝塔会自动重载 PHP-FPM,不用手动重启。
赞片CMS 建议用 PHP 7.2–7.4,PHP 8.0 以上有些老版本模板会报兼容错误。
第三步:手动改 php.ini(自己编译 PHP 的用户)
如果你不是宝塔环境,得手改配置文件。先找 php.ini 在哪:
php -i | grep "Loaded Configuration File"
假设输出 /usr/local/php/etc/php.ini,编辑它,找到这一行:
;extension=openssl
把行首的分号删掉,变成:
extension=openssl
然后重启 PHP-FPM:systemctl restart php-fpm。
注意:Windows 下要写成
extension=php_openssl.dll,并且确保ext目录里有这个 dll,同时extension_dir指向的绝对路径是对的。只写extension=openssl在 Windows 上会静默失败。
第四步:配置 CA 证书,解决 cURL error 60
扩展开了还报 60,说明服务器上没有受信任的根证书。下载 CA 包:
cd /www/server/php/74/etc/
wget https://curl.se/ca/cacert.pem
然后在 php.ini 里加上两行(路径按你实际下载位置改):
curl.cainfo = /www/server/php/74/etc/cacert.pem
openssl.cafile = /www/server/php/74/etc/cacert.pem
重启 PHP-FPM。这一步能同时管住 cURL 和 file_get_contents 两条采集通道,赞片CMS 两处都在用。
注意:证书文件要跟着系统时间走。服务器时间如果差了几个小时,HTTPS 校验照样失败,先用
date看一眼,不对就ntpdate ntp.aliyun.com对时。
第五步:验证采集是否恢复
新建 test.php:
<?php
$ch = curl_init('https://www.baidu.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_exec($ch);
echo curl_errno($ch), ' | ', curl_error($ch);
输出 0 | 表示成功;还出 60 就是证书路径没生效,回去检查 php.ini 里的路径有没有写错、文件权限是不是 644。
确认没问题后打开赞片CMS 后台,进「采集管理 → 采集资源 → 选择接口 → 开始采集」,能正常拉回数据就收工。
小结
- 先区分「扩展没装」和「证书没配」,两个报错长得像,处理方式完全不同。
- 宝塔用户走「软件商店 → PHP 设置 → 安装扩展」勾 openssl,别手改 php.ini 免得被面板覆盖。
curl.cainfo和openssl.cafile两个都要配,缺一个file_get_contents那条路还是断的。- 服务器时间不准会让证书校验失败,排查时顺手
date一下。 - 排查用的 phpinfo 文件用完立刻删。
原文链接:https://www.gj0.com/thread-611.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。