2016-07-19 6 views
0

Есть несколько других сообщений по этой проблеме. Разница здесь в том, что я готов выдать неприятный URL.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: нет альтернативного имени субъекта сертификата не соответствует имени целевого хоста«па -gdl.lib.overdrive.com '"

Существует подстановочный знак ssl cert. Я попытался выяснить, что делает завиток командной строки по умолчанию в качестве возможного решения. Однако, видя, что я просто выполняю ту же команду через shell_exec, должна быть нулевая разница.

Опция командной строки создает HTML-код расширенного поиска, а shell_exec - нет. Любая информация о том, почему была бы весьма признательна.

+1

'curl' вызывается через пробеги оболочки под другим пользователем, чем один бежал из сценария 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

Все еще борется с жужжанием. –

ответ

Смежные вопросы