Nicht get-cURL-laden in PHP unter Apache

Ich bin überhaupt nicht vertraut mit dem einrichten eines Apache - /PHP-web-server, aber ich habe, dies zu tun, da meine IT-Abteilung nicht. Ich habe alles, was ich online finden kann, und ich kann einfach nicht get-cURL-laden in PHP unter apache. Ich installierte Apache 2.2, es funktioniert. I habe PHP installiert, und das funktioniert, das weiß ich, weil mein php-Skript prüft, ob der cURL-Erweiterung ist geladen, und mein php echo an den browser zurückgegeben wird, mein code ist unten dargestellt:

  if (!extension_loaded("curl")) {
     header('Status: 500', true, 500);
     echo 'cURL extension for PHP is not loaded! <br/> Add the following lines to your php.ini file: <br/> extension_dir = &quot;&lt;your-php-install-location&gt;/ext&quot; <br/> extension = php_curl.dll';
     return;
  }

Habe ich Folgendes getan:

  • Habe ich auskommentiert extension_dir="c:\php\ext\" (und versuchte unzählige Variationen von diesem Weg, mit Hilfe der vorwärts-und rückwärts-Schrägstriche, etc., sowie die ./ext/ - Ansatz).
  • Habe ich gewährleistet, ich habe extension=php_curl.dll in meinem php.ini.
  • Ich habe dafür gesorgt, dass mein apache-user hat lese-und execute-Berechtigungen für die PHP-Ordner und alle Unterordner/Dateien
  • Die ich gemacht habe, ob ich Sie C:\PHP in meiner path-Umgebungsvariable.
  • Ich habe versucht, die Vorschläge hier: Konnte nicht geladen php_curl, und hier: PHP cURL nicht geladen ist, über das ändern von php.ini, sowie viele andere außerhalb von StackOverflow.

Nichts gearbeitet hat. Ich bin auf einem Windows Server 2003-box. Ich bekomme keine Fehlermeldung im Apache-log. Ich bin stecken. Bitte helfen Sie mit! Danke.

Hinzufügen angefordert Apache-log-info:

[Tue Aug 14 14:38:22 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Tue Aug 14 14:38:23 2012] [notice] Apache/2.2.22 (Win32) PHP/5.2.17 mod_ssl/2.2.22 OpenSSL/0.9.8t configured -- resuming normal operations
[Tue Aug 14 14:38:23 2012] [notice] Server built: Jan 28 2012 11:16:39
[Tue Aug 14 14:38:23 2012] [notice] Parent: Created child process 5616
[Tue Aug 14 14:38:24 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Tue Aug 14 14:38:25 2012] [notice] Child 5616: Child process is running
[Tue Aug 14 14:38:25 2012] [notice] Child 5616: Acquired the start mutex.
[Tue Aug 14 14:38:25 2012] [notice] Child 5616: Starting 64 worker threads.
[Tue Aug 14 14:38:25 2012] [notice] Child 5616: Starting thread to listen on port 8080.
  • Überprüfen Sie Ihre php-cli Ausgabe von cmd öffnen, dann mit cd in das Verzeichnis und geben "php.exe -v", in Erster Linie, Sie sollten sehen, den Fehler, warum die dont geladen. Dann teilen Sie die Ergebnisse mit uns, damit wir Ihnen helfen können.
  • Erhielt ich buchstäblich nichts im cmd-Fenster ausführen php.exe -v
  • Tut function_exists('curl_init') auch false zurückgeben? Ich Frage mich, ob es extension_loaded() zerbrochen ist. Denken Sie auch daran, dass die php.ini-Konfiguration verwendet, die von der Apache mod_php SAPI ist nur geladen werden, wenn Apache gestartet ist (nicht jede Anforderung), so dass Sie brauchen, um starten Sie den Apache-Dienst nach dem ändern der php.ini. Wenn eine Erweiterung ladbar, basierend auf php.ini-Einstellungen, die Sie sehen in der Regel protokollierte Fehler in der Apache-error-log beim Start mit einem hilfreichen(ish) Fehlermeldung.
  • Ich bin kein PHP-Programmierer, ich habe Sie nur ein php-proxy mit meinem ESRI javascript website, so dass die extension_loaded () - Funktion ist nur die php-api-Aufruf. Wie kann ich testen, wenn function_exists('curl_init') false zurückgibt?
  • Buchstäblich nur ersetzen extension_loaded("curl") mit function_exists('curl_init') im obigen code. Dies wird testen, ob eine Funktion im Zusammenhang mit der curl-Erweiterung vorhanden ist, anstatt die Erweiterung selbst, die ich nie gemacht habe, und bin nicht sicher, ob die Auswirkungen, ich habe immer nur geprüft für die Funktion, die ich brauche, anstatt eine ganze Erweiterung. Stellen Sie sicher, starten Sie den Apache-Dienst jedoch zuerst.
  • der Wechsel zu function_exists('curl_init') gibt false zurück, als auch, nach einem Neustart von Apache
  • ein Blick in deine Apache-error-log. Sollten Sie einen Eintrag finden der Nähe von unten (zu der Zeit, wenn Sie es neu gestartet), dass sagt Parent: Received restart signal -- Restarting the server. - können Sie kopieren/einfügen alles nach diesem Eintrag am Ende in die Frage? Sollte 10-20 Zeilen oder so. Wie hast du Apache installieren? Mit dem MSI-Paket von Apache.org?
  • Ich habe die Installation von Apache mit der MSI-Datei aus apache.org. Ich aktualisiert meine Frage mit der gewünschten Apache-log-Daten.
  • posten Sie Ihre <?php phpinfo(); ?> Seite
  • Interessant, nicht eine einzige PHP-Fehler. Auch in diesem Fall, entweder Ihr php.ini ist nicht darauf hindeuten, dass curl geladen werden soll, oder es wird erfolgreich geladen. Als Burak zu Recht schlägt vor, die nächste Stelle zu sehen ist phpinfo(). Erstellen Sie eine .php-Datei, die enthält einfach <?php phpinfo(); und laden Sie es in einem browser. Erstens überprüfen Sie, dass die angezeigte php.ini-Pfad korrekt ist (D. H. es entspricht, den Sie wurden geändert), dann scrollen Sie nach unten und sehen Sie, wenn Sie können finden Sie alle Informationen über curl.
  • Ich bin mir nicht sicher, was das bedeutet. Wie ich oben erwähnt, ich nutze nur die php-Datei als proxy für eine ESRI-javascript-website, die nutzt die proxy.php Datei zum verarbeiten großer json Parameter in einem POST. Ich bin kein php-Programmierer, daher bin ich nicht sicher, wie Sie Sie zu veröffentlichen, was Sie angefordert.
  • Euch beiden, danke. Es scheint, php suchen in den falschen Ort für mein php.ini-Datei (Sie blickt in C:\Windows). Wie kann ich es korrigieren zu schauen, in die richtige Lage? Ich habe den PHPIniDir in meiner httpd.conf-Datei, aber es scheint, dass wird ignoriert.
  • In httpd.conf, wahrscheinlich in Richtung der Unterseite, sollten Sie zwei Linien, die Aussehen wie diese (kopiert aus meinem httpd.conf): LoadModule php5_module "C:/Program Files/PHP/php5apache2_4.dll" und PHPIniDir "C:/Program Files/PHP" - der Wert der PHPIniDir sollte auf das Verzeichnis zeigen, wo die php.ini befindet (nicht die Datei selbst)
  • Ich habe kopierte meine Zeilen ein: LoadModule php5_module "c:/php/php5apache2_2.dll" PHPIniDir 'c:\php\' <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> ich hatte zu schreiben 'c:\php\', um es zu arbeiten. Es würde nicht funktionieren mit der Schrägstriche.
  • OK, dass ist wirklich merkwürdig. Ich habe nie gesehen, PHP ignorieren den Wert PHPIniDir überhaupt. Versuchen Sie, Schrägstriche, aber das entfernen der Hinterkante (D. H. C:/php). Ich gehe davon aus, dass php.ini ist bei C:\php\php.ini?
  • Versuch, dass Apache nicht gestartet werden. Der einzige Fehler im Apache-log ist die Session-Cache nicht konfiguriert Fehler. Der einzige Weg, bekomme ich Apache starten mit PHP ist die Verwendung der Schrägstriche zurück, die beide von Ihnen.
  • wo hast du das installieren von PHP aus? (Wie in, welche version von welchem Paket hast du verwendet, erworben von wo aus?)
  • windows.php.net/download ich heruntergeladene version 5.2.17 VC6 Thread Safe installer-Paket (MSI).
  • In der Tat kann ich sehen, wo dieses zu Ende geht - lassen Sie es uns weiter, diese Diskussion im chat

InformationsquelleAutor Shawn | 2012-08-14
Schreibe einen Kommentar