简短表格:我已经获得了一些PHP代码,可以将视频从我的网站上传到YouTube。我使用了Google常用的PHP库google-api-php-client
。我在两台服务器上运行此代码;它适用于一个(https://www.example.com),但在经过一段时间的工作后突然停止了对另一个(https://dev.example.com)的工作。
详细信息:执行传输的代码是相对标准的,据我所知:一旦加载了库并且某些变量得到了一些值,我就会这样做:
$client = new Google_Client();
$client->setClientId($youtube_client_id);
$client->setClientSecret($youtube_client_secret);
$redirect = filter_var('https://example.com/upload-to-youtube', FILTER_SANITIZE_URL);
$client->setRedirectUri($redirect);
$youtube = new Google_YoutubeService($client);
$client->authenticate();
header('Location: ' . $redirect);
对于无法正常工作的服务器,$client->authenticate
行会抛出错误:
Google_IOException: HTTP Error: (0) Problem with the SSL CA cert (path? access rights?) in Google_CurlIO->makeRequest() (line 128 of /var/www/html/example/includes/google-api-php-client/src/io/Google_CurlIO.php).
其他可能相关的细节:
回到开发人员的YT应用程序控制台,我设置了以下重定向URI:
https://dev.example.com/delete-from-youtube
https://dev.example.com/upload-to-youtube
根据我在https://www.sslshopper.com/ssl-checker.html找到的SSL证书测试人员,两个网站上的证书都是可见且有效的。
dev.example.com的证书来自Comodo; www.example.com的证书来自GeoTrust。我想我可以尝试从GeoTrust获得一个新的证书,但我宁愿不花钱,除非我知道它会解决问题。
两个服务器都运行相同版本的curl,如果相关的话。
似乎(对我而言)证书和访问权限应该没问题(除非证书测试人员错误),所以我不明白投诉的来源。代码和服务器配置已经有一段时间没有改变,因此我搜索了一个外部解释。 (我知道这些都是着名的最后一句话,但无论如何。)有什么想法吗?谢谢!
答案 0 :(得分:1)
潜在的重复问题: Amazon MarketplaceWebServiceOrders requests suddenly failing, PHP curl giving SSL CA cert error?
我不得不重启服务器,而不仅仅是apache才能解决问题。