Problem mit SOAP/Transport/HTTP.php, open_basedir und CURLOPT_FOLLOWLOCATION

Hallo,

bei einem Kunden haben wir einen oscommerce-Shop laufen, bei dem wir
nach einem Update der PHP-Version nun einen Fehler haben.

Und zwar wird beim Versuch, eine Kreditkarte beim entsprechenden
Payment-Provider zu checken, folgender Fehler geworfen:

Error code 2 in /..../lib/SOAP-0.7.1/SOAP/Transport/HTTP.php at line
358: curl_setopt() : CURLOPT_FOLLOWLOCATION cannot be activated when in
safe_mode or an open_basedir is set

Ich hab mal ein bisschen gegoogelt und soviel schon selber
herausgefunden: seit PHP 4.4.4 ist CURLOPT_FOLLOWLOCATION nicht mehr
zulässig, wenn open_basedir gesetzt ist - und das ist es im Falle
unseres Kunden.

Momentan läuft auf dem Rechner die Version PHP 4.4.6, da SOAP-Paket
trägt die Versionsnummer '0.7.1'. Kann mir jemand sagen, ob (und wo) ich
eine Version des SOAP-Pakets kriegen kann, welche mit besagter
PHP-Version funktioniert und die CURLOPT_FOLLOWLOCATION nicht mehr
verwendet bzw. diesen Fehler sonstwie umgeht?

Oder hat jemand einen Tip für einen guten Workaround an dieser Stelle
oder sonstige Ideen, wie ich das lösen kann?

Besten Dank und viele Grüße,
Jens
Jens Riedel [ Mi, 21 November 2007 12:13 ] [ ID #1876038 ]

Re: Problem mit SOAP/Transport/HTTP.php, open_basedir und CURLOPT_FOLLOWLOCATION

Jens Riedel schrieb:
>
> Momentan läuft auf dem Rechner die Version PHP 4.4.6, da SOAP-Paket
> trägt die Versionsnummer '0.7.1'. Kann mir jemand sagen, ob (und wo) ich
> eine Version des SOAP-Pakets kriegen kann, welche mit besagter
> PHP-Version funktioniert und die CURLOPT_FOLLOWLOCATION nicht mehr
> verwendet bzw. diesen Fehler sonstwie umgeht?

Hallo,

da es sich um ein PEAR Paket handelt, kannst du die aktuellen Versionen
unter pear.php.net bekommen. SOAP-0.7.1 ist schon etwas betagt (Dez.
2002). Aktuell ist Version 0.11.0. Zumindest in dieser Version ist das
einfache

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

aus Version 0.7.1 durch ein

if (!ini_get('safe_mode') && !ini_get('open_basedir')) {
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

ersetzt worden. Ob du nur diese Zeile ersetzen kannst damit es
funktioniert, bzw. was für Auswirkungen das haben kann, weiss ich nicht.

Frohes Schaffen,
Christoph
Christoph Bersch [ Mi, 21 November 2007 12:31 ] [ ID #1876039 ]
PHP » de.comp.lang.php.misc » Problem mit SOAP/Transport/HTTP.php, open_basedir und CURLOPT_FOLLOWLOCATION

Vorheriges Thema: APC Upload Tracking mit FastCGI
Nächstes Thema: XML RPC Client in PHP - Kein Connect zum Remote Server - Array ()