Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP ZipArchive addFile已停止工作_Php_Ziparchive_Php Zip Archive - Fatal编程技术网

PHP ZipArchive addFile已停止工作

PHP ZipArchive addFile已停止工作,php,ziparchive,php-zip-archive,Php,Ziparchive,Php Zip Archive,我已经有以下代码运行了相当长的一段时间: $thisdir = "$_SERVER[DOCUMENT_ROOT]/webroot/uploads/user_uploaded_files/"; if( !empty( $files ) ){ $destination = 'uploads/zip_files/meeting_' . $meetingId .'.zip'; $zip = new ZipArchive(); $zip->open( $

我已经有以下代码运行了相当长的一段时间:

$thisdir = "$_SERVER[DOCUMENT_ROOT]/webroot/uploads/user_uploaded_files/";

    if( !empty( $files ) ){

     $destination = 'uploads/zip_files/meeting_' . $meetingId .'.zip';

     $zip = new ZipArchive();

     $zip->open( $destination, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE );

     //Add all the uploaded files ( $file = filename.ext )

         foreach( $files as $file ){

             if(file_exists( $thisdir . $file )){

                $zip->addFile('/uploads/user_uploaded_files/' . $file, $file);

         }
}
然而,它最近刚刚停止工作(不确定以前的版本,但当前版本是7.0.9)

foreach循环与以前一样运行,
file\u exists
始终返回
true
,但没有文件被添加到存档中


有人也经历过吗?非常感谢您的帮助或指导

您可能应该测试$zip->open是否有效:

$res = $zip->open($destination, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if ($res) {
    foreach ($files as $file) {
        if (file_exists($thisdir . $file)) {
            $zip->addFile('/uploads/user_uploaded_files/' . $file, $file);
        }
    }
}
你可以加上

error_reporting(E_ALL);
ini_set('display_errors', true);

在脚本的开头,查看是否有任何错误。

刚刚找到了此问题的解决方案,并希望它可能对将来的用户有所帮助

$files
是一个字符串数组,因此在其上循环如下:
foreach($files作为$file)
我总是得到一个字符串

至少我是这么认为的,但是
addFile()
显然没有将其作为字符串读取

只需在
addFile()
之前强制转换每个项目,问题就解决了。解决方案如下所示:

foreach( $files as $file ){

    if(file_exists( $thisdir . $file )){

        $file = (string)$file;

        $zip->addFile('uploads/user_files/' . $file, $file);

    }

}

您是否检查了文件权限?出于好奇,您是否可以发布var_dump($files);)的输出?