【问题标题】:Strange error message with PharPhar 的奇怪错误信息
【发布时间】:2015-11-12 21:25:09
【问题描述】:

使用phar创建tar.gz归档返回一个奇怪的错误,错误信息如下:

异常“BadMethodCallException”,消息“无法新添加” 转化的phar “c:/www/dimg/uploads/7e6d3a5e39e43d1351e7069517f11250.tar.gz”到 phars 列表,具有该名称的 phar 已存在 c:\www\dimg\upload.php:163 堆栈跟踪:

0 c:\www\dimg\upload.php(163): PharData->compress(4096)

1 {主要}

生成 Phar 档案的 sn-p 正在使用:

$dir_id        = md5(microtime() . $_SERVER['REMOTE_ADDR']);
$upload_dir    = 'uploads/' . $dir_id;
mkdir($upload_dir, 777);

try {
    $a = new PharData($upload_dir . '.tar.gz');
    $a->buildFromDirectory($upload_dir);
    $a->compress(Phar::GZ);
} catch (Exception $e) {
    $error = true;
    $err_msg .= '<li>Exception : ' . $e . '</li>';
}

我尝试清空上传目录,但每次都会产生相同的错误。

【问题讨论】:

    标签: php phar


    【解决方案1】:

    而不是使用

    $a = new PharData($upload_dir . '.tar.gz');
    

    用途:

    $a = new PharData($upload_dir . '.tar');
    

    其实compress会生成两个.tar,然后是tar.gz。由于您已将 .tar.gz 指定为初始输出,因此无法使用相同的文件类型覆盖它。

    【讨论】:

    • 这就是我所缺少的。
    【解决方案2】:

    我认为问题在于您正在尝试构建将tar.gz 发送到的目录。换句话说,你告诉它构建到一个特定的目录,然后告诉它构建那个目录。

    您需要做的就是在另一个目录中构建tar.gz,而不是您尝试压缩的目录。

    【讨论】:

    • 一开始我也是这么想的,但是在不同的目录下创建存档并没有解决问题。
    • 您尝试在哪个文件夹中创建它?
    • 当前目录如下:$a = new PharData('new-archive.tar.gz');.
    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2011-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多