2013-03-12 8 views
7

Ich versuche, die Erweiterung .zip in PHP zu aktivieren, aber die Funktion unten gibt false zurück.Aktivieren Sie die Zip-Erweiterung für PHP

if (!extension_loaded('zip')) { 
    return false; 
} 

Wie aktiviere ich die .zip-Erweiterung ohne Verwendung von php.ini?

Ist die Aktivierung über ini_set() möglich?

+0

Was ist Ihr Betriebssystem? –

+0

gibt es eine ZIP mit einer Beschreibung, die bei einem __phpinfo() aufgelistet wird; __ – Waygood

+0

Es gibt Userland-Implementierungen der ZIP-Erweiterung. Obwohl die API normalerweise abweicht. – mario

Antwort

2

Vorausgesetzt, dass Sie tatsächlich die ZIP-Erweiterung auf dem Server verfügbar haben, können Sie dl() verwenden, um es dynamisch zu laden (< 5.3).

if (!extension_loaded('zip')) { 
    // Attempt to load the zip 
    $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : ''; 
    dl($prefix . 'zip.' . PHP_SHLIB_SUFFIX); 

    if (!extension_loaded('zip')) { 
     // Couldn't load the ZIP module dynamically, either 
     return false; 
    } 
} 

Wenn Sie eine Version über 5.3.0 verwenden, werden Sie nicht in der Lage sein, dl zu verwenden, wenn es in einen Web-Server auf der Kommandozeile oder eingebettet läuft.

Das lässt Ihre einzige Option, die php.ini zu ändern, wenn Sie nicht mit dem integrierten Modul in PHP neu kompilieren können. Sie können dies nicht mit ini_set tun, da dies nur zur Laufzeit angewendet wird, während alle erforderlichen Module bereits beim Start von der PHP-Programmdatei geladen wurden.

+1

Diese Funktion wurde aus einigen SAPIs in PHP 5.3 entfernt. –

+0

dl wird in einigen Fällen in php5.4 nicht aktiviert sein, daher ist es besser, php mit --enable-gzip –

+1

neu zu kompilieren. Er hat ausdrücklich gesagt, dass er 'php.ini' nicht verwenden möchte. Wenn er das nicht benutzen kann, glaubst du wirklich, dass er sich neu kompilieren kann? –

1

verwenden,

if (!extension_loaded('zip')) 
{ 
    $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; 
    dl($prefix . 'zip.' . PHP_SHLIB_SUFFIX); 
    if (!extension_loaded('zip')) 
    { 
     return false; 
    } 
} 
+1

Es sieht genauso aus wie oben. Ich konnte keinen Unterschied sehen ... – asitha

Verwandte Themen