2012-08-31 88 views
0

在过去的一个小时中,我一直在搜索,添加和解决如何解压文件失败。 我正在使用php定期下载zip。我需要将压缩文件的内容提取到一个名为zips的文件夹,并不重要(只是不同的目录)。我使用无限空间和带宽共享主机,如果这有什么区别。无法解压缩PHP中的文件

我下载的zip文件是1 zip,里面有5个拉链,在这5个拉链的每一个里面都有1 csv。我需要读取每个csv并将信息存储到一个数据库中,我已经拥有该代码,但无法打开任何zip文件。

我已经尝试了下面的代码,并且我没有对任何一个运气。 我也试过php.net上的解压缩函数,但没有运气。

有什么建议吗?

$local_file = '_08222012_213000.zip'; 
$zip = zip_open($local_file); 
if (is_resource($zip)) { 
    while ($zip_entry = zip_read($zip)) { 
    $fp = fopen(zip_entry_name($zip_entry), "w"); 
    if (zip_entry_open($zip, $zip_entry, "r")) { 
     $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); 
     fwrite($fp,"$buf"); 
     zip_entry_close($zip_entry); 
     fclose($fp); 
    } 
    } 
    zip_close($zip); 
} 

这一个没有工作之一:

$zip = new ZipArchive; 
$res = $zip->open($local_file); 
if ($res === TRUE) { 
    $zip->extractTo('zips/'); 
    $zip->close(); 
    echo 'ok'; 
} else { 
    echo 'failed'; 
} 
} 

编辑:我得到这个代码工作,如果任何人有在未来的问题。

//Change directory 
chdir("zips/"); 
exec("unzip ./$local_file"); 
+6

字符串“没有运气”和“没有工作”不是PHP中的内置错误消息。确实**你的代码是如何工作的?你有没有收到任何错误讯息? – 2012-08-31 15:18:14

+0

会发生什么?你有任何错误信息?你在PHP中启用了错误消息吗? –

+0

我得到的唯一的错误消息是在下面,但是在php.net上指出:警告:zip_read()期望参数1是资源,在/home/cindyhod/public_html/test/ftp/ftp2.php在线72 –

回答

1

您的PHP安装似乎没有安装zip支持。如果你使用的是windows,PHP应该带有DLL(我记得),你应该在你的PHP.ini文件中找到它对应的extensions =行来启用它。

如果您使用Linux,根据您的发行版,您可以通过包管理器安装该扩展。或做:

sudo pecl install zip 

有关如何安装它的更多信息,请参阅http://www.php.net/manual/en/zip.installation.php

我的另一个建议是确保文件的权限是PHP进程(通常作为web服务器进程运行)可以访问该文件。还要确保该路径可供网络服务器访问,I.E.在public_html目录中(这被认为是共享主机将chroot PHP切换到webroot目录的最佳实践)。

+0

我有共享主机。 –

+0

@Iphphp请求您的主机启用/安装zip扩展。您可以通过检查echo phpinfo()的结果来验证我是否正确。如果没有zip扩展名,你将无法做到这一点(除非你想写一个纯粹的PHP zip实现......这是毫无意义的)。 – hsanders

+0

我在哪里查找是否启用了拉链?在底部“注册的PHP流| https,ftps,compress.zlib,compress.bzip2,php,文件,glob,数据,http,ftp,phar,zip”zip是最后一个。 –