php - PHP mkdir() 不创建存档
问题描述
我试图在表单提交时运行以下代码来创建一个新目录,将一个 html 文档复制到新目录,重命名 html 文档,并将一个包含 html 表单数据的 xml 保存到我们创建的目录。这一切都没有发生,但我没有收到任何错误。任何帮助将不胜感激,因为我现在已经花了几个小时来解决这个问题,但我仍然看不到任何问题。
这是 PHP 脚本(很抱歉格式不好,它只是不会干净地粘贴):
<?php
if(isset($_POST['submit'])) {
error_reporting(1);
ini_set('display_errors', 'On');
$name = $_POST["name"];
$address = $_POST["address"];
$photo = $_POST['photo'];
mkdir("/kunden/homepages/9/d773272021/htdocs/articles/$name", 0755);
chdir("/kunden/homepages/9/d773272021/htdocs/articles/$name");
copy("/kunden/homepages/9/d773272021/htdocs/input.html", "/kunden/homepages/9/d773272021/htdocs/articles/$name");
rename("/kunden/homepages/9/d773272021/htdocs/articles/$name/input.html", "/kunden/homepages/9/d773272021/htdocs/articles/$name/$name . '.html'");
//XML Data In Documents
$xmlString = "<?xml version='1.0' encoding='UTF-8'?>
<name>$name</name>
<address>$address</address>
<photo>$photo</photo>
";
//The above
$dom = new DOMDocument;
$dom->preserveWhiteSpace = TRUE;
$dom->loadXML($xmlString);
$dom->save("/kunden/homepages/9/d773272021/htdocs/articles/$name" . '.xml');
}
?>
这是 HTML 表单的代码(它正在运行并运行 PHP 脚本,但我想我不妨将它包括在内以防万一):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Article Creation Wizard (Beta)</title>
</head>
<body>
<form method="post" action="output.php">
Name: <input type="text" name="name"><br>
Address: <input type="text" name="address" /><br>
Photo: <input type="file" name="photo" /><br>
<input type="submit">
</form>
</body>
</html>
提前致谢。
编辑: 它有效!有点...这是我的新脚本:
<?php
if(isset($_POST)) {
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$name = $_POST["name"];
$address = $_POST["address"];
$photo = $_POST['photo'];
mkdir("articles/$name", 0755, true);
copy('/homepages/9/d773272021/htdocs/input.html', "/homepages/9/d773272021/htdocs/articles/$name/");
rename("/homepages/9/d773272021/htdocs/articles/$name/input.html", "/homepages/9/d773272021/htdocs/articles/$name/$name.html");
//XML Data In Documents
$xmlString = "<?xml version='1.0' encoding='UTF-8'?>
<name>$name</name>
<address>$address</address>
<photo>$photo</photo>
";
//The above
$dom = new DOMDocument;
$dom->preserveWhiteSpace = TRUE;
$dom->loadXML($xmlString);
$dom->save("articles/$name.xml");
}
?>
目录和 XML 文件被创建,这很棒。但是,HTML 不会被复制,因此不会以它的新名称命名。
以下是我遇到的错误,感谢您的帮助:
Warning: copy(): The second argument to copy() function cannot be a directory in /homepages/9/d773272021/htdocs/output.php on line 10
Warning: rename(/homepages/9/d773272021/htdocs/articles/cancer/input.html,/homepages/9/d773272021/htdocs/articles/cancer/cancer.html): No such file or directory in /homepages/9/d773272021/htdocs/output.php on line 11
Warning: DOMDocument::loadXML(): Extra content at the end of the document in Entity, line: 3 in /homepages/9/d773272021/htdocs/output.php on line 21
解决方案
首先,由于报告-1,您不会得到所有错误,将以下内容添加到顶部以获得所有正确的错误;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
第二点是您的 xml 字符串没有正确形成。1.0 和 UTF-8 不在字符串里面使用下面的;
$xmlString = "<?xml version='1.0' encoding='UTF-8'?>
<name>$name</name>
<address>$address</address>
<photo>$photo</photo>
";
第三,您正在检查应该通过发布请求发送的提交值,但是在您的发布请求的快速 var 转储之后,没有任何$_POST["submit"]
值这是从未设置过的,因此它不会进入您的 if,这是您不会得到的另一个原因一个错误。
使用if(isset($_POST)) {
,而不是if(isset($_POST['submit'])) {
我认为新的 DOMDocument 是一个类,所以应该用 () 调用它。这样做$dom = new DOMDocument();
而不是$dom = new DOMDocument;
在我给你的提示之后它应该可以工作,它不适用于我,因为我没有你试图访问的文件夹。我的代码错误可以在下面的链接中检查
推荐阅读
- objective-c - Xcode 错误:无法创建目录“/[PATH_TO_APP]/[APP_NAME].app”(在项目“[PROJECT]”的目标“[TARGET]”中)
- python - PyQt5 中的标签自动换行不占用空间
- azure-data-factory-2 - 将多个文件加载到 ADLS 时如何执行数据块笔记本
- pandas - Pandas:DataFrame op DataFrame 结果为 NaN
- r - 通过控制组为几个子组中的每一个划分整个数据帧
- json - 仅在字符串周围添加引号,而不是数字或列表
- spring-boot - 使用 RewritePath 刷新 Spring Cloud Gateway 失败
- android-studio - 在 TabLayout 中的选项卡之间添加空格
- c# - 我想进入类的表单对象类型的构造函数
- node.js - 在 ID 数组中搜索具有相同 ID 的 mongoose 上的多个文档