Итак, у меня есть заархивированный пакет загрузки для программы, которую я написал, и я пытаюсь написать свой скрипт сообщения об ошибках таким образом, чтобы при отправке он записывал данные об ошибках в файл под названием «ошибки».xml 'в почтовом индексе.Мой Zip-файл выглядит так до запуска этого скрипта:
titrek_0.0.28.zip / ---
/ TITREK.8xp
/ changelog.txt
/ trekgui.8xv
Вот код, который я использую для изменения почтового индекса, как указано:
<?php
if(isset($_POST['sendbug'])){
if($_POST['short'] == "") {$errors[] = "Bug title not provided";}
if($_POST['desc'] == "") {$errors[] = "Description not provided";}
if(empty($errors)){
$fileToModify = 'bugs.xml';
$fileToOpen = $_POST['version'];
if(!is_writable($fileToOpen)){echo "File not writeable!";}
$zip = new ZipArchive;
if ($zip->open($fileToOpen) === TRUE) {
echo "We got it!";
$oldData = $zip->getFromName($fileToModify);
if($oldData === false){
$string = <<<XML
<?xml version='1.0'?>
<bugs>
</bugs>
XML;
$xml = simplexml_load_string($string);
echo "Creating new string";
} else {
$xml = simplexml_load_string($oldData);
$zip->deleteName($fileToModify);
}
$newbug = $xml->addChild("bug");
$newbug->addChild("id", count($xml->bug));
$newbug->addChild("short", $_POST['short']);
$newbug->addChild("desc", $_POST['desc']);
$zip->addFromString ('bugs.xml', $xml->asXML());
if($zip->close() === false) echo "Failed. Likely permission problem.";
}
}
}
?>
<form id="bugreporter" method="post" action="">
<div>Bug Reporting</div><br />
Select Version: <select name="version">
<?php
$types = array("alpha", "beta", "stable");
foreach($types as $t){
foreach(array_reverse(glob("/home/trek/www/downloads/" . $t . "/*.zip")) as $file){
echo "<option value=\"" . $file . "\">";
echo $t . " - ";
echo explode("_", basename($file, ".zip"))[1];
echo "</option>";
}
}
?>
</select><br />
<input type="text" name="short" placeholder="A Short Description" /><br />
<textarea name="desc" placeholder="Describe the bug in greater detail here.">
</textarea>
<input type="submit" name="sendbug" value="Submit Bug Report" />
</form>
После запуска этого кода ZIPтеперь выглядит так:
titrek_0.0.28.zip / ---
/ bugs.xml
/ titrek_0.0.28 / ---
/ TITREK.8xp
/ changelog.txt
/ trekgui.8xv
Может кто-нибудь подсказать, пожалуйста, почему это происходит и как это исправить?