我正在尝试在 PHP 中启用 .zip 扩展名,但下面的函数返回 false。
if (!extension_loaded('zip')) {
return false;
}
如何在不使用 php.ini 的情况下启用 .zip 扩展?
是否可以启用 using ini_set()
?
我正在尝试在 PHP 中启用 .zip 扩展名,但下面的函数返回 false。
if (!extension_loaded('zip')) {
return false;
}
如何在不使用 php.ini 的情况下启用 .zip 扩展?
是否可以启用 using ini_set()
?
假设您实际上在服务器上有可用的 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 可执行文件在启动时已经加载了所有必需的模块。
用这个,
if (!extension_loaded('zip'))
{
$prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
dl($prefix . 'zip.' . PHP_SHLIB_SUFFIX);
if (!extension_loaded('zip'))
{
return false;
}
}