2013-03-12 3 views
7

PHPで.zip拡張を有効にしようとしていますが、以下の関数はfalseを返します。PHPのzip拡張を有効にする

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

php.iniを使用せずに.zip拡張子を有効にするにはどうすればよいですか?

ini_set()を有効にすることはできますか?

+0

これを使用しますか –

+0

__phpinfo(); __ – Waygood

+0

のZIP拡張のユーザーランド実装があります。 APIは通常は逸脱しますが。 "AddHandlerのがapplication/x-httpd-phpののの.php .zipファイル" :あなたの.htaccessファイルで – mario

答えて

2

実際にサーバーで使用できるZIP拡張機能がある場合は、dl()を使用して動的にロードすることができます(< 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; 
    } 
} 

あなたが5.3.0以上のバージョンを使用している場合は、それは、コマンドライン上で実行されているか、Webサーバに組み込まれていますしない限り、dlを使用することはできません。

PHPに組み込まれたモジュールを使用して再コンパイルできない場合、php.iniの変更のみが可能です。 ini_setを使用して実行することはできません。実行時にのみ適用されるため、必要なモジュールはすべて起動時にPHP実行可能ファイルによってロードされます。

+1

この機能は、PHP 5.3の一部のSAPIから削除されました。 –

+0

dlはphp5.4で有効にならないことがあるので、--enable-gzipで再コンパイルする方が良いです –

+1

彼は 'php.ini'を使いたくないと明示しました。もし彼がそれを使うことができないなら、あなたは本当に彼が再コンパイルできると思いますか? –

1

あなたのOSは何ですか?、

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

それは上記と同じように見えます。私は違いを見ることができませんでした... – asitha

関連する問題