apache - LAMP 用 php 的 zip 库,却说找不到 =。=
Jun 06, 2016 pm 08:42 PM
俺是一个很水的 web 程序猿,基本没写过什么项目。问题一看也很水,但是在网上找了很久,也没找到答案,希望大侠们别喷俺。
环境如下:
- Archlinux 3.16.3
- Apache 2.4.10
- PHP 5.6.0
需求是通过页面选择,将其他地方的 zip 文件下载到服务端,然后解压输出到客户端。在编写过程中有个疑问,用 fwrite
写到 /tmp/xx.zip 的文件对服务端的普通用户不可见。索性用
<code>exec('ls /tmp/*.zip', $result); print_r($result); </code>
可以显示出来,而且通过 file_get_contents
之类的方法可以确保文件的确存在。
现在的问题是,在 php.ini 中已经确保开启了 zip 扩展,并在本地执行以下代码也可行:
<code>$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); } </code>
注意,是本地执行,即 php file.php
,但是放到 Apache 目录中,通过浏览器访问就不行了。错误提示:PHP Fatal error: Call to undefined function zip_open()
回复内容:
俺是一个很水的 web 程序猿,基本没写过什么项目。问题一看也很水,但是在网上找了很久,也没找到答案,希望大侠们别喷俺。
环境如下:
- Archlinux 3.16.3
- Apache 2.4.10
- PHP 5.6.0
需求是通过页面选择,将其他地方的 zip 文件下载到服务端,然后解压输出到客户端。在编写过程中有个疑问,用 fwrite
写到 /tmp/xx.zip 的文件对服务端的普通用户不可见。索性用
<code>exec('ls /tmp/*.zip', $result); print_r($result); </code>
可以显示出来,而且通过 file_get_contents
之类的方法可以确保文件的确存在。
现在的问题是,在 php.ini 中已经确保开启了 zip 扩展,并在本地执行以下代码也可行:
<code>$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); } </code>
注意,是本地执行,即 php file.php
,但是放到 Apache 目录中,通过浏览器访问就不行了。错误提示:PHP Fatal error: Call to undefined function zip_open()
本地执行没问题,用 URL 访问说函数不存在,说明 cli 环境和 Apache 用的不是一个 PHP。
找到 cli 环境的 PHP 位置,看是否和 mod_php 位置一致,如果一致,请:
重启 Apache。

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법
