XML文件不通过托管服务器上的PHP脚本更新

时间:2015-02-23 21:59:58

标签: php xml

内容未在托管服务器上的xml文件中更新。

<?php
 $xml = new DOMDocument('1.0', 'utf-8');
 $xml->formatOutput = true;
 $xml->preserveWhiteSpace = false;
 $xml->load('rates.xml');

 //Get item Element
 $element = $xml->getElementsByTagName('rates')->item(0);

 //Load child elements
 $name = $element->getElementsByTagName('gold')->item(0);
 $comment = $element->getElementsByTagName('silver')->item(0);

 //Replace old elements with new
 $element->replaceChild($name, $name);
 $element->replaceChild($comment, $comment);
 ?>
<body><hr>
 <form method="POST" action='' autocomplete="off">
     Enter Gold Rate (Rs/10g) : <input required type="text" value="<?php echo $name->nodeValue  ?>" name="gold-rate" pattern="^[0-9]{5}$" placeholder="for 10g"></br></br>
Enter Silver Rate (Rs/kg) :  <input required type="text" value="<?php echo $comment->nodeValue  ?>"  name="silver-rate" pattern="^[0-9]{5}$" placeholder="for 10g"/></br></br>
 <input name="submit" type="submit" />

 </form><hr>
</body>
 <?php


 if (isset($_POST['submit'])) 
 { 
$name->nodeValue = $_POST['gold-rate'];
$comment->nodeValue = $_POST['silver-rate'];
htmlentities($xml->save('sample.xml'));

 }


 ?>

上面的代码是关于我试图在XML中保存然后在别处显示的两个值的表单提交。在本地主机上它获得了成功,但在服务器上这个PHP脚本无法更改我的XML文件的数据。我设置的文件夹的权限是755,所有文件的权限是644.尝试更改权限并最终导致500内部错误。由于这看起来像服务器端安全问题,我不知道哪里最终寻找解决方案。 服务器在PHP 5.6上运行,尝试过其他用户的解决方案,但没有任何成果。我是否必须在PHP中更改某些内容,或者我是否必须联系我的托管服务提供商。

1 个答案:

答案 0 :(得分:0)

HTTP服务器通常在没有权限的情况下与用户一起运行,以修改服务器上的文件。大多数Web应用程序都存储可以在数据库中修改的任何数据。

如果您希望Web服务器可以写入文件或目录,可以尝试:

  • 使父目录可写入Web服务器。
  • 运行一个创建文件或目录的小php脚本
  • 恢复目录上的原始权限

之后,您可以从原始的php文件中写入文件。

如果您的php脚本或其父目录是全局可写的,我猜您会收到500错误。根据您的托管服务提供商,如果您为服务器写入的任何文件创建单独的目录,它可能会起作用。