XML文件未通过托管服务器上的PHP脚本进行更新
问题描述:
内容未在托管服务器上的xml文件中更新。XML文件未通过托管服务器上的PHP脚本进行更新
<?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中,或者我必须联系我的托管服务提供商。
答
HTTP服务器通常与用户一起运行,无权修改服务器上的文件。大多数Web应用程序存储可以在数据库中修改的任何数据。
如果你想拥有由Web服务器文件或目录可写,你可以尝试:
- 使父目录写入到Web服务器。
- 运行一个小的PHP脚本创建的文件或目录
- 恢复的目录
原来的许可之后,你可以从你的原始PHP文件写入文件。
我想你会得到一个500错误,如果你的PHP脚本或其父目录是世界可写的。根据您的托管服务提供商,如果您为服务器写入的任何文件创建单独的目录,则可能会有效。
实际上,我保存数据的xml与我加载的xml不同,它在代码'sample.xml'中,脚本工作得很好,感谢以上信息 – 2015-02-24 10:44:41