7

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

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

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

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

4

2 に答える 2

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;
    }
}

dl5.3.0より前のバージョンを使用している場合は、コマンドラインで実行されているか、Webサーバーに組み込まれていない限り、使用できません。

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

于 2013-03-12T09:53:35.750 に答える
1

これを使って、

if (!extension_loaded('zip'))
{ 
    $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
    dl($prefix . 'zip.' . PHP_SHLIB_SUFFIX);
    if (!extension_loaded('zip')) 
    {
       return false;
    }
}
于 2013-03-12T10:11:21.447 に答える