PHP文件\u获取\u内容无法在windows上读取zip
我到处寻找解决这个问题的办法,但我找不到 我正在做如下的事情:PHP文件\u获取\u内容无法在windows上读取zip,php,permissions,Php,Permissions,我到处寻找解决这个问题的办法,但我找不到 我正在做如下的事情: $data = file_get_contents('zip://../files/' . $this->_file->getHash() . '.zip#' . $stat['name']); 具体错误是: failed to open stream: operation failed 它在我使用的Linux机器上工作,但我正试图让项目在Windows机器上运行。我知道zip文件的路径是正确的,并且是可读的,因为在
$data = file_get_contents('zip://../files/' . $this->_file->getHash() . '.zip#' . $stat['name']);
具体错误是:
failed to open stream: operation failed
它在我使用的Linux机器上工作,但我正试图让项目在Windows机器上运行。我知道zip文件的路径是正确的,并且是可读的,因为在上面代码段所在的代码中,我使用ZipArchive类读取它,如下所示:
$this->_za = new ZipArchive();
$res = $this->_za->open('../files/' . $file->getHash() . '.zip');
这很好用
为什么文件无法从zip中读取内容?我必须对文件目录做些什么吗?我不太擅长Windows上的文件夹和权限
编辑:为了确保我的代码没有问题,我设置了一个非常简单的测试脚本,在完全相同的目录中有一个zip文件:
<?php
$za = new ZipArchive();
$res = $za->open('myZip.zip');
for($i=0; $i<$za->numFiles; $i++)
{
$stat = $za->statIndex($i);
$data = file_get_contents('zip://myZip.zip#' . $stat['name']);
echo $stat['name'];
echo $data;
}
不确定您将文件存储在何处,但PHP上的此错误可能与您的问题有关不确定您将文件存储在何处,但PHP上的此错误可能与您的问题有关在Linux上,zip包装器需要使用PHP编译,以便使用似乎适合您的
zip://
在Windows上,您需要在
php.ini
内部启用php\u zip.dll
才能使用它,并且可能需要安装一个PECL扩展(不确定)。在Linux上,zip包装需要用php编译,才能使用zip://
,这似乎适合您
在Windows上,您需要在
php.ini
内部启用php\u zip.dll
才能使用它,并且可能需要安装一个PECL扩展(不确定)。修复相当简单。而不是:
$data = file_get_contents('zip://myZip.zip#' . $stat['name']);
如果我这样做:
$data = file_get_contents('zip://' . realpath('myZip.zip') . '#' . $stat['name']);
它可以工作。修复相当简单。而不是:
$data = file_get_contents('zip://myZip.zip#' . $stat['name']);
如果我这样做:
$data = file_get_contents('zip://' . realpath('myZip.zip') . '#' . $stat['name']);
它是有效的。我使用的是PHP5.5,我的理解是它是用php编译的,但我会尝试一下dll。根据这一点,zlib是在Windows上内置的:检查phpinfo()的输出显示zip已启用并注册为流。事实并非如此。我使用的是PHP5.5,我的理解是,它是用php编译的,但我会尝试一下dll。根据这一点,zlib是在Windows上内置的:检查phpinfo()的输出会显示zip已启用并注册为流。所以不是这样。