我正在尝试借助以下代码制作 zip。它在我的本地主机上运行良好。但是当我将它传输到 DirectAdmin 服务器时,它返回错误代码 9ZipArchive::ER_NOENT : return 'N No such file';
我不知道如何修复它以创建 zip
define('ABSPATH', dirname(__FILE__) . '/' );
$dest = ABSPATH.'zip_file_name.zip';
$file = ABSPATH.'test.php';
$zip = new ZipArchive;
$res = $zip->open($dest, ZIPARCHIVE::OVERWRITE);
if ($res === TRUE) {
echo 'ok';
$zip->addFile($file, $file);
$zip->close();
} else {
echo 'failed, code:' . $res;
}
Run Code Online (Sandbox Code Playgroud)
在本地主机(Windows)上测试了您的脚本。我收到错误消息“失败,代码:9”。
@see http://php.net/manual/en/ziparchive.open.php并搜索“ZipArchive::ER_NOENT”。
我认为您需要创建 zip 文件。
当我添加ZipArchive::CREATE 时它可以工作(输出“ok”):
define('ABSPATH', dirname(__FILE__) . '/' );
$dest = ABSPATH.'zip_file_name.zip';
$file = ABSPATH.'test.php';
$zip = new ZipArchive;
$res = $zip->open($dest, ZipArchive::CREATE | ZIPARCHIVE::OVERWRITE);
if ($res === TRUE) {
echo 'ok';
$zip->addFile($file, $file);
$zip->close();
} else {
echo 'failed, code:' . $res;
}
Run Code Online (Sandbox Code Playgroud)
- 更新 -
zip_file_name.zip 中的文件 test.php 具有完整的 Windows 路径。根级别(Windows 环境)的 zip 文件中有一个目录“C:”。这样对吗?
如果您不想要绝对路径,您可以使用相对路径:
define('ABSPATH', dirname(__FILE__) . '/' );
$dest = ABSPATH.'zip_file_name.zip';
$relativeFile = 'test.php';
$absoluteFile = ABSPATH.$relativeFile;
$zip = new ZipArchive;
$res = $zip->open($dest, ZipArchive::CREATE | ZIPARCHIVE::OVERWRITE);
if ($res === TRUE) {
echo 'ok';
$zip->addFile($absoluteFile, $relativeFile);
$zip->close();
} else {
echo 'failed, code:' . $res;
}
Run Code Online (Sandbox Code Playgroud)