【问题标题】:php fwrite only works on localhost not server?php fwrite 仅适用于本地主机而不是服务器?
【发布时间】:2012-11-30 02:26:35
【问题描述】:

我是一名新的 PHP 开发人员。我正在尝试在服务器上编写一个平面文件,并且我有以下代码。

<?php 
$myfile= "file1.txt";
if(isset($_POST['ta'])){
    $newData = nl2br(htmlspecialchars($_POST['ta']));
    $handle = fopen($myfile, "w");
    fwrite($handle, $newData);
    fclose($handle);
}

if(file_exists($myfile)){
    $myData=file_get_contents($myfile);
}
?>

<form action="file.php" method="post">
    <textarea name="ta" cols="64" rows="10"><?php echo $myData; ?></textarea>
    <br/> <br />
    <input name="myBtn" type="submit" />
</form>
<br/> 
<br/> 

<?php echo $myData; ?>

我不明白的是,为什么上面的程序在 localhost 上完美运行,但在实际服务器上却什么也没做?

【问题讨论】:

  • 网络服务器以什么用户身份运行?该用户是否具有服务器上该目录/文件的写入权限?
  • 这是我学校提供给学生的服务器,所以是的。我想我会吗?我该如何检查?
  • 您是否可以通过 ssh 访问您的 Web 目录?如果是这样,您可以去那里查看该文件和/或您尝试写入的目录的权限。如果做不到这一点,请在您的代码中添加一些错误处理,并查看它到底是在哪一点失败以及为什么。我几乎可以保证网络用户没有写权限。
  • 看来我拥有所有者的写入权限
  • 天哪!我爱你超人!我刚刚编辑了公开的写权限,它起作用了!!!现在找不到更好的方式来表达我对你的爱了!!

标签: php localhost


【解决方案1】:

您需要检查文件是否可由运行 Web 服务器的用户写入,这可能类似于 wwwapache 或其他东西,并且与您的用户不同 --wjones17或任何例如。如果您的权限看起来像

-rw-r--r--   1 wjones17  group     17 Nov 17 20:02 index.php

然后您的用户有权更改该文件,但没有其他人可以更改,包括 Web 服务器,因此您的 php 脚本以 wwwapache 或其他方式运行。

就如何解决这个问题而言,您的选择可能在共享环境中受到限制,但授予所有用户完全权限绝对是个坏主意;尽管它似乎可以“解决”问题,但您只是在向更大的问题敞开大门。您可能会问自己是否有其他方法可以完成您想要的,例如使用数据库。这完全取决于您的情况以及您想要做什么。

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2014-08-11
    相关资源
    最近更新 更多