Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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 什么';这段代码是错误的:文件从远程压缩文件中获取内容并解压缩到本地目录_Php - Fatal编程技术网

Php 什么';这段代码是错误的:文件从远程压缩文件中获取内容并解压缩到本地目录

Php 什么';这段代码是错误的:文件从远程压缩文件中获取内容并解压缩到本地目录,php,Php,此代码的目的是从中央服务器提取upgrade.zip,将其解压缩并放置在常驻服务器上的文件夹中。我没有收到任何错误,它只是导致死亡(“!出现问题。请重试!”) 您应该调查$zip->open()中的返回值。它可以是以下任何一种: 另外,为什么不尝试使用您喜爱的解压程序手动打开下载的zip文件,以检查文件是否确实有效?您可以将远程zip文件的内容转换为字符串。。。但是你永远不会把它保存在任何地方。这就是问题所在-你需要把zip文件的内容写进ABSPATH。'wp-content/themes/my

此代码的目的是从中央服务器提取upgrade.zip,将其解压缩并放置在常驻服务器上的文件夹中。我没有收到任何错误,它只是导致死亡(“!出现问题。请重试!”)


您应该调查
$zip->open()
中的返回值。它可以是以下任何一种:


另外,为什么不尝试使用您喜爱的解压程序手动打开下载的zip文件,以检查文件是否确实有效?

您可以将远程zip文件的内容转换为字符串。。。但是你永远不会把它保存在任何地方。

这就是问题所在-你需要把zip文件的内容写进ABSPATH。'wp-content/themes/mytheme/upgrade.zip'-现在你只是把文件保存在内存中-它实际上不存在于磁盘上。@ignacio-例如,我只熟悉move\u upload\u file($source,$saved\u file\u location)。如何从文件内容中保存文件?使用
fopen()
fwrite()
fclose()
@Andy>谢谢您的帮助。我不知道如何指定fwrite()的目标。例如,我可以使用$myfile=fwrite($target);然后将$myfile发送到openZip?openZip($myfile)?@Scott-file\u put\u contents可能是一个更好的选择-我相信它是fopen()、fwrite()和fclose()的包装器-您只需将文件名和从远程服务器下载的数据传递给它,然后将相同的文件名传递给您的openZip方法。不要使用if($x==true)您应该在对象上使用try/catch,这也可以让你得到准确的错误。
require('../../../wp-blog-header.php');

function openZip($file_to_open) { 
    global $target;  
    $zip = new ZipArchive();  
    $x = $zip->open($file_to_open);  
    if($x === true) {  
        $zip->extractTo($target);  
        $zip->close();  
        unlink($file_to_open);  
    } else {  
        die("!There was a problem. Please try again!");  
    }  
} 

$payload = file_get_contents('http://myserver.com/upgrade.zip');
if(isset($payload)) 
    {
    $filename = 'upgrade.zip';
    $source = file_get_contents('http://myserver.com/upgrade.zip');
    $target = ABSPATH.'wp-content/themes/mytheme/';

    // permission settings for newly created folders
    $chmod = 0755;  

    $saved_file_location = $target . $filename;

openZip($saved_file_location);

}
ZIPARCHIVE::ER_EXISTS 
ZIPARCHIVE::ER_INCONS 
ZIPARCHIVE::ER_INVAL 
ZIPARCHIVE::ER_MEMORY 
ZIPARCHIVE::ER_NOENT 
ZIPARCHIVE::ER_NOZIP 
ZIPARCHIVE::ER_OPEN 
ZIPARCHIVE::ER_READ 
ZIPARCHIVE::ER_SEEK