PHP mkdir () не создает архив - PullRequest
       64

PHP mkdir () не создает архив

0 голосов
/ 28 февраля 2019

Я пытаюсь запустить следующий код при отправке формы, чтобы создать новый каталог, скопировать HTML-документ в новый каталог, переименовать HTML-документ и сохранить XML-файл с данными из HTML-формы в созданную нами директиву.Ничего этого не происходит, но я не получаю никаких ошибок.Любая помощь будет принята с благодарностью, так как я потратил часы на устранение неполадок, и до сих пор не вижу ничего плохого.

Вот скрипт 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

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Прежде всего, вы не получите все ошибки из-за сообщения -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, это еще одна причина, по которой вы не получите ошибку.

USE if(isset($_POST)) { вместо if(isset($_POST['submit'])) {

и я думаю, что новый DOMDocument является классом, поэтому его следует вызывать с помощью ().сделайте это $dom = new DOMDocument(); вместо $dom = new DOMDocument;

После того, как я дал вам советы, он должен работать, он не работает со мной, потому что у меня нет папки, к которой вы пытаетесь обратиться.Мои ошибки с вашим кодом можно проверить ниже по ссылке

screenshot of debug

0 голосов
/ 28 февраля 2019

Попробуйте новый

new DOMDocument();

И активируйте

error_reporting(E_ALL);
...