0

我想自动将最新的 WordPress 版本下载到网络服务器的根文件夹。到目前为止,这是我的代码:

<?php
$fp = fopen (dirname(__FILE__) . '/wp.tar.gz', 'w+');
$ch = curl_init('http://wordpress.org/latest.tar.gz');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);
exec('tar -zxvf wp.tar.gz wordpress');
unlink('wp.tar.gz');
?>

问题是,WordPress tar 文件包含一个包含所有文件的目录 /wordpress,所以在运行这个 PHP 文件后,我现在有一个包含文件的 /wordpress 目录,但我希望它不是 /wordpress 中的所有内容在 / (从 PHP 文件运行的地方)。或者我应该使用 'mv' 命令将所有内容从 /wordpress 移动到 / ?

谢谢

4

3 回答 3

2

如果您使用的是足够新版本的 GNU 或 BSD tar:

exec('tar -zxvf --strip-components=1 wp.tar.gz wordpress');

顺便说一句,如果您不需要提取文件的列表,则不需要该v选项。

另请参阅:如何从 tarball 中提取特定目录?并剥离一个领先的目录?

于 2013-07-20T11:49:31.730 回答
1
Why dont you use this : 
http://wordpress.org/latest.zip

Then your code would look like:

<?php
$filename = "http://wordpress.org/latest.zip";
$contents = file_get_contents($filename);
$latestzip_file = 'latest.zip';
$fh = fopen($latestzip_file, 'w') or die("can't open file");
fwrite($fh, $contents);
fclose($fh);
$zip = new ZipArchive;
$res = $zip->open($latestzip_file);
if($res === TRUE)
{
      $zip->extractTo(dirname(__FILE__));       // Extract to the main directory //
  $zip->close();
      unlink($latestzip_file);
    }
?>
于 2013-07-20T11:09:55.643 回答
1

尝试添加 --strip=1 opt

  tar xvzf wp.tar.gz --strip=1
于 2013-07-20T12:02:32.767 回答