无法在ubuntu服务器上打开zip文件错误

时间:2016-10-11 10:25:17

标签: php csv ubuntu

我必须一次下载多个csv文件。所以,我创建了zip文件并将所有csv文件放入该zip文件中。一切正常,我可以下载我的zip文件,可以在我的localhost上打开。我使用的是Windows操作系统。

以下是export_csv.php的代码。

    for($i=0; $i<$len; $i++) {
        $user_id = $array[$i];

        #get user name 
        $name = "...";

        #get all day from selected month with holidays
        $day_of_month_arr = allDay_of_month($year,$month); 

        #get user datetime

        #prepare start and finish time with holidays and weekend
        $result_arr = time_format($result, $day_of_month_arr);

        #prepare data as csv format to export as csv
        $exp = export($result_arr);

        #put each user csv file into 'Report.zip'
        #archive all csv file as zip and force download that zip file
        $zipname = 'Report.zip';
        $zip = new ZipArchive;
        $zip->open($zipname, ZipArchive::CREATE);
        $f = fopen('php://memory', 'w');
        $file_name = $name."-".$user_id.".csv";
        foreach ($exp as $arr) {
            fputcsv($f,$arr);
        }
        rewind($f);
        $zip->addFromString($file_name, stream_get_contents($f));
        //close the file
        fclose($f);

    }

    $zip->close();
    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename='.$zipname);
    header('Content-Length: ' . filesize($zipname));
    readfile($zipname);

    // remove the zip archive
    unlink($zipname);

    function export() {.......}
    function time_format() {........}
    function allDay_of_month() {......}

因此,我将该脚本export_csv.php上传到我的ubuntu服务器(生产服务器)。当我尝试从生产服务器下载此文件时,我可以下载该文件但不能再打开此zip文件。它显示"......\Report.zip" is invalid"

当我在php_error_logs中检查错误时,我发现了以下问题。

[12-Oct-2016 04:09:43 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:43 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:43 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  main(): Cannot destroy the zip context in /opt/lampp/htdocs/project/export_csv.php on line 48
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  ZipArchive::close(): Failure to create temporary file: Permission denied in /opt/lampp/htdocs/project/export_csv.php on line 62
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  filesize(): stat failed for Report.zip in /opt/lampp/htdocs/project/export_csv.php on line 65
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  readfile(Report.zip): failed to open stream: No such file or directory in /opt/lampp/htdocs/project/export_csv.php on line 66
[12-Oct-2016 04:09:44 Europe/Berlin] PHP Warning:  unlink(Report.zip): No such file or directory in /opt/lampp/htdocs/project/export_csv.php on line 69

我认为这个错误是权限问题。但我是ubuntu操作系统中的新手,所以,我不知道如何解决它。

我非常感谢您的帮助。

更新

当我尝试从服务器下载并打开zip文件时,我添加了确切的错误。

1 个答案:

答案 0 :(得分:1)

好像你的php服务器不允许写入你给它的路径。 您需要向运行php服务器的用户添加写入权限到此路径:/ opt / lampp / htdocs / project /

您应该使用chmod linux命令。运行php的linux用户应具有该路径的写权限。

http://ss64.com/bash/chmod.html

https://www.linux.com/learn/understanding-linux-file-permissions