【问题标题】:Problems saving file in PHP ("failed to open stream: No such file or directory")在 PHP 中保存文件时出现问题(“无法打开流:没有这样的文件或目录”)
【发布时间】: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/,如下图所示...

谁能告诉我我在这里做错了什么!?!?

【问题讨论】:

    标签: php html file-upload ftp save


    【解决方案1】:

    从目录中删除前导正斜杠:

    $file = sprintf('SavedForms/%s',$_POST['saveFile']);
    

    假设SavedForms与正在执行的php脚本在同一目录中。

    路径是相对于脚本的。通过放置一个前导斜杠,您声明了一个来自机器根目录的绝对路径。这意味着它当前正在根目录中寻找SavedForms,当然,它没有找到它

    【讨论】:

    • 感谢您帮助一个新手!
    • 没问题。祝你的项目好运。
    猜你喜欢
    • 2015-11-13
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多