Wp 2.9 CURLPROTO_FILE cannot be activated

This article has been written before more than 24months, information might old.

Daca ati facut update la 2.9 , si in configurarea php-ului nu aveti setat open_basedir ca fiind „” ( NULL ) , o sa va apara un mesaj de alerta asemanator cu :

Warning: curl_setopt() [function.curl-setopt]: CURLPROTO_FILE cannot be activated when in safe_mode or an open_basedir is set in /home/jon/public_html/wp-includes/http.php on line 1302

Dupa cum spune si in mesajul de eroare optiunea CURLPROTO_FILE este incompatibila cu open_basedir asta pentru ca open_basedir restrictioneaza deschidera fisierelor numai la nivelul directoarelor declarate in valuarea aferenta optiunii open_basedir , acum evident ca daca nu avem acces la modificarea configurarii php si nu putem schimba setarea open_basedir pe null suntem obligati sa scoatem acea bucata de cod din executie , sau sa dezactivam mesajele de alerta de la php dar nu este recomandat si este si logic ca daca vrem sa schimbam modul de raportare a errorilor trebuie oarecum sa avem acces la configurarea php ( spun oarecum pentru ca daca nu este dezactivata functia ini_set se poate schimba o valoare din configurarea php numai pentru executia acelui script , de asemenea se mai poate daca apache permite directiva php_flag in .htaccess ) .

Scoaterea din executie se poate face prin stergere(sau comentare e cam acelas lucru ) sau prin modificare si redactarea unei directive conditionale .

Asa ca daca vreti sa scapati de erroare deschideti fisierul http.php din wp-includes mergeti la linia 1300-1302 , si pe acolo ar trebui sa vedeti urmatoarea condtitie : if ( defined( ‘CURLOPT_TIMEOUT_MS’ ) ) { dupa care urmeaza un else{ acele doua bucle trebuie inlocuite cu :

if ( defined( 'CURLOPT_TIMEOUT_MS' ) ) {
if ( !ini_get('safe_mode') && !ini_get('open_basedir') ) {
$timeout_ms = (int) ceil( 1000 * $r['timeout'] );
curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT_MS, $timeout_ms );
curl_setopt( $handle, CURLOPT_TIMEOUT_MS, $timeout_ms );
}
} else {
if ( !ini_get('safe_mode') && !ini_get('open_basedir') ) {
$timeout = (int) ceil( $r['timeout'] );
curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt( $handle, CURLOPT_TIMEOUT, $timeout );
}
}

Daca functia ini_get este restrictionata sau nu functioneaza corespunzator din alte motive intorduce-ti codul intr-o conditie ce nu se va executa niciodata , adica inlocuiti cu :

if(0) {
		if ( defined( 'CURLOPT_TIMEOUT_MS' ) ) {
if ( !ini_get('safe_mode') && !ini_get('open_basedir') ) {
$timeout_ms = (int) ceil( 1000 * $r['timeout'] );
curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT_MS, $timeout_ms );
curl_setopt( $handle, CURLOPT_TIMEOUT_MS, $timeout_ms );
}
} else {
if ( !ini_get('safe_mode') && !ini_get('open_basedir') ) {
$timeout = (int) ceil( $r['timeout'] );
curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt( $handle, CURLOPT_TIMEOUT, $timeout );
}
} }
Share the joy

Leave a Reply