在 PHP 中保存文件时出现问题(“无法打开流:没有这样的文件或目录”)
Posted
技术标签:
【中文标题】在 PHP 中保存文件时出现问题(“无法打开流:没有这样的文件或目录”)【英文标题】:Problems saving file in PHP ("failed to open stream: No such file or directory") 【发布时间】:2014-07-21 19:11:22 【问题描述】:我只是想保存一个包含表单序列化值的文件。
简单的形式
<h2>php Form Validation Example</h2>
<form form method="post">
First Name: <input type="text" name="fname" value="
<?PHP
echo ($_POST['fname'])
?>">
<br><br>
<input type="submit" name="Save" value="Save Current Form">
Save File Name As: <input type="text" name="saveFile">
<br><br>
<input type="submit" name="Load" value="Load Old Form">
Load File: <input type="text" name="loadFile">
</form>
当我保存/加载文件时,我使用 PHP 代码:
<?php
if (isset($_POST['Save']))
$PostArray = $_POST;
$s = base64_encode(serialize($PostArray));
$file = sprintf('/SavedForms/%s',$_POST['saveFile']);
file_put_contents($file, $s);
if (isset($_POST['Load']))
$file = sprintf("/SavedForms/%s",$_POST['loadFile']);
$_POST = unserialize(base64_decode(file_get_contents($file)));
?>
但它只是告诉我
(当我尝试保存文件名“aaa”时)
that:“警告: file_put_contents(/SavedForms/aaa) [function.file-put-contents]: 无法打开流:没有这样的文件或目录”
我已经在文件中创建了目录/SavedForms/
,如下图所示...
谁能告诉我我在这里做错了什么!?!?
【问题讨论】:
【参考方案1】:从目录中删除前导正斜杠:
$file = sprintf('SavedForms/%s',$_POST['saveFile']);
假设SavedForms
与正在执行的php脚本在同一目录中。
路径是相对于脚本的。通过放置一个前导斜杠,您声明了一个来自机器根目录的绝对路径。这意味着它当前正在根目录中寻找SavedForms
,当然,它没有找到它
【讨论】:
感谢您帮助一个新手! 没问题。祝你的项目好运。以上是关于在 PHP 中保存文件时出现问题(“无法打开流:没有这样的文件或目录”)的主要内容,如果未能解决你的问题,请参考以下文章
使用php保存html表单时出现错误未定义变量和所有值在sql db中保存为0 [重复]
在 Linux 中保存文件时出现 System.IO.DirectoryNotFoundException