2016-07-19 149 views
0

有几个其他职位引用此问题。这里的区别是我愿意发布这个麻烦的网址。curl命令行工作,php shell_exec()不是

这工作: curl https://pas-gdl.overdrive.com/advanced-search

这不起作用: $pagesource = shell_exec("curl https://pas-gdl.overdrive.com/advanced-search");

我得到了可怕的51错误:“卷曲:(51)SSL:没有替代证书主题名称匹配目标主机名“PAS -gdl.lib.overdrive.com'“

涉及通配符ssl证书。我试图找出默认情况下命令行curl是做什么的一个可能的解决方案。但是,由于我只是通过shell_exec执行相同的命令,应该没有区别。

命令行选项生成高级搜索html,而shell_exec不生成。任何信息为什么将不胜感激。

+1

'curl'不同的用户下通过shell调用运行比一个从PHP脚本运行。有几个解决方案,首先想到的是使用'--insecure'开关,这会关闭SSL验证。另一个是使用[guzzle](https://github.com/guzzle/guzzle)这样的库,所以你不必使用'shell_exec'。第三个是你只是试着'$ pagesource = file_get_contents('https://pas-gdl.overdrive.com/advanced-search“)' –

+0

我试过'-k'这导致了重定向错误。我使用'-L'来允许跟踪位置,这以错误的html被获取结束,我尝试了'file_get_contents',但是却得到了这个错误:'在blah.php中启用加密失败。' –

+0

仍在拼图。 –

回答