PHP mkdir()不会创建存档

问题描述 投票:0回答:2

我试图在表单提交时运行以下代码来创建一个新目录,将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
php forms directory mkdir
2个回答
1
投票

首先,由于报告-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;

在我给你的提示后,它应该工作,它不与我合作,因为我没有你试图访问的文件夹。您可以在链接下方检查我的代码错误

screenshot of debug


0
投票

尝试新的

new DOMDocument();

并激活

error_reporting(E_ALL);
© www.soinside.com 2019 - 2024. All rights reserved.