奋斗LXH_393 发布于 2017-05-12 20:28

俺是一个很水的 web 程序猿,基本没写过什么项目。问题一看也很水,但是在网上找了很久,也没找到答案,希望大侠们别喷俺。

环境如下:

  • Archlinux 3.16.3
  • Apache 2.4.10
  • PHP 5.6.0

需求是通过页面选择,将其他地方的 zip 文件下载到服务端,然后解压输出到客户端。在编写过程中有个疑问,用 fwrite 写到 /tmp/xx.zip 的文件对服务端的普通用户不可见。索性用

exec('ls /tmp/*.zip', $result);
print_r($result);

可以显示出来,而且通过 file_get_contents 之类的方法可以确保文件的确存在。

现在的问题是,在 php.ini 中已经确保开启了 zip 扩展,并在本地执行以下代码也可行:

$zip = zip_open($target);

if($zip) {
    while($entry = zip_read($zip)) {
        echo zip_entry_name($entry) . ': ' .
            zip_entry_filesize($entry) . '/' .
            zip_entry_compressedsize($entry) . ', by' .
            zip_entry_compressionmethod($entry) . "\n";
    }
    zip_close($zip);
}

注意,是本地执行,即 php file.php,但是放到 Apache 目录中,通过浏览器访问就不行了。错误提示:PHP Fatal error: Call to undefined function zip_open()

1 个回答
  • 本地执行没问题,用 URL 访问说函数不存在,说明 cli 环境和 Apache 用的不是一个 PHP。

    找到 cli 环境的 PHP 位置,看是否和 mod_php 位置一致,如果一致,请:

    重启 Apache。

    2017-05-13 03:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
活跃用户
  • 1
    问道摩托
  • 2
    袁广龙976丶
  • 3
    逍遥子
  • 4
    亮仔
  • 5
    芙蓉花
  • 6
    作小die_syj
  • 7
    mobiledu2502875483
  • 8
    王丽珠景平怡伦_621
  • 9
    adfa3sd5f6a
  • 10
    欣欣大妮
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有