我试图在PHP中启用.zip扩展名,但下面的函数返回false。
if (!extension_loaded('zip')) {
return false;
}
我如何启用。zip扩展与不使用php.ini?
可以启用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;
}
}
如果你使用的是5.3.0以上的版本,你将无法使用dl
,除非它在命令行上运行或嵌入到web服务器。
如果您不能使用PHP内置的模块重新编译,那么您唯一的选择就是修改php.ini
。你不能使用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;
}
}