我正在尝试编写一个将字符串写入.txt文件的简单PHP脚本。 简单。为此,我有这个:
<?php
if(isset(isset($_GET["fileName"]) == true && isset($_GET["output"]) == true){
$fp = fopen($_GET["fileName"], "a+");
if($fp !== null){
fputs($fp, $_GET["output"] . "\r\n");
fclose($fp);
}
}
?>
但我真的需要能够保存到特定的位置,所以我写了这个:
<?php
if(isset($_GET["filePath"]) == true && isset($_GET["fileName"]) == true && isset($_GET["output"]) == true){
$fp = fopen($_GET["filePath"] . $_GET["fileName"], "a+");
if($fp !== null){
fputs($fp, $_GET["output"] . "\r\n");
fclose($fp);
}
}
?>
但当然,这不起作用
1.如何使用PHP保存到特定位置?
这条路可以是一条相对路径吗? (我只是发送“/ output /”,保存将按预期完成)。
谢谢。
现在我在这里:
<?php
if(isset($_GET["filePath"]) && isset($_GET["fileName"]) && isset($_GET["output"])){
$filename=preg_replace('/[^a-z0-9]/i', '', $_GET['fileName']).'.txt';
$filepathSanitized='http://thepathtomywebsite/~subdomain/'.$_GET["filePath"].$filename;
echo $filepathSanitized; // i get the correct path, but no file is present there
$fp = fopen($_GET["filepathSanitized"], "a+");
if($fp !== null){
fputs($fp, $_GET["output"] . "\r\n");
fclose($fp);
}
else echo ('Something wrong'); // it never gets to this
}
?>
我这样称呼上述内容:
$.get("save_me.php", { filePath: "demo/", fileName: "text", output: 'thing to write into' });
但是没有创建文件。我不知道要调试什么来找出问题所在。 谢谢。
答案 0 :(得分:2)
您可能会发现这是一个权限问题 - 调试代码以查看是否实际设置了$ fp。
此外,像这样的代码可能非常危险,允许在允许Web服务器访问的任何地方创建或替换文件。您应该清理fileName,并自己创建完整路径,例如
//clean any nasties from the filename
$filename=preg_replace('/[^a-z0-9]/i', '', $_GET['fileName']).'.txt';
//calculate a path relative to our document root...
$filepath=$_SERVER['DOCUMENT_ROOT'].'/path/to/files/'.$filename;
答案 1 :(得分:1)
但是没有创建文件。我不知道要调试什么来找出问题所在。谢谢。
您应该调试传递给fopen()的参数。