在 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

保存数据时出现问题

尝试在 PHP 文件中调用方法时出现 ActionScript 错误

使用 savefiledialog 保存图像时出现问题

运行 php 文件时出现致命错误