我正在尝试在PHP中启用.zip扩展名,但下面的函数返回false。
if (!extension_loaded('zip')) {
return false;
}
如何在不使用php.ini的情况下启用.zip扩展名?
是否可以启用ini_set()
?
答案 0 :(得分: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 :(得分:1)
使用此,
if (!extension_loaded('zip'))
{
$prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
dl($prefix . 'zip.' . PHP_SHLIB_SUFFIX);
if (!extension_loaded('zip'))
{
return false;
}
}