Es gibt mehrere andere Beiträge in Bezug auf dieses Problem. Der Unterschied hier ist, dass ich bereit bin, die lästige URL herauszugeben.Curl-Befehlszeile funktioniert, php shell_exec() nicht
Dies funktioniert: curl https://pas-gdl.overdrive.com/advanced-search
Dies funktioniert nicht: $pagesource = shell_exec("curl https://pas-gdl.overdrive.com/advanced-search");
ich die gefürchteten 51 Fehler: „curl: (51) SSL: keine Alternative Zertifikatnamen übereinstimmt Zielhostnamen‚pas -gdl.lib.overdrive.com '"
Es ist ein Wildcard-SSL-Cert beteiligt. Ich habe versucht herauszufinden, was die Befehlszeilencurl standardmäßig als mögliche Lösung macht. Da ich aber gerade denselben Befehl über shell_exec ausführe, sollte der Unterschied null sein.
Die Befehlszeilenoption erzeugt die erweiterte Suche html und die shell_exec nicht. Jede Information, warum, würde sehr geschätzt werden.
'curl' über Shell läuft unter einem anderen Benutzer aufgerufen als derjenige aus dem PHP-Skript ausgeführt wird. Es gibt ein paar Lösungen, die erste, die mir in den Sinn kommt, ist die Verwendung von "--insecure", die die SSL-Verifizierung deaktiviert. Der andere ist, eine Bibliothek wie [guzzle] (https://github.com/guzzle/guzzle) zu benutzen, damit du nicht mit 'shell_exec' herumspielen musst. Der dritte ist, dass Sie einfach versuchen, '$ pagesource = file_get_contents ('https://pas-gdl.overdrive.com/advanced-search") '. –
Ich habe' -k' versucht, was zu einem Umleitungsfehler führt. Dann Ich benutze '-L', das erlaubt den folgenden Ort. Dies endet mit dem falschen HTML. Ich habe versucht, die' file_get_contents', aber dann diesen Fehler zu bekommen: 'Crypto konnte nicht in blah.php' aktiviert werden. –
Immer noch kämpfen guzzle .. –