7

我正在尝试在 PHP 中启用 .zip 扩展名,但下面的函数返回 false。

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

如何在不使用 php.ini 的情况下启用 .zip 扩展?

是否可以启用 using 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;
    }
}

dl如果您使用的是 5.3.0 以上的版本,除非它在命令行上运行或嵌入到 Web 服务器中,否则您将无法使用。

php.ini如果您无法使用 PHP 内置的模块重新编译,那么您唯一的选择就是修改。您不能使用 来执行此操作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 回答