【问题标题】:fwrite() Isn't creating nor writing to a file that I specify it tofwrite() 没有创建或写入我指定的文件
【发布时间】:2013-02-25 21:15:47
【问题描述】:

“LoggedIn”确实 = true 并且“CurrentUser”不是“ManselD”,但它仍然没有写入或创建文件 :( 是的,我的 /accounts/logs 文件夹是 CHMOD 702

if(!$user == "ManselD"){
    ini_set('date.timezone', 'Europe/London');
    $ip = $_SERVER['REMOTE_ADDR'];
    $txt = "$user Logged In With The Ip: $ip At ".date("h:i")."\n";
    $url = "/accounts/logs/".trim(date('F')."-".date('d')."-".date('Y').".txt");
    $file = fopen($url, "a");
    fwrite($file, $txt);
    fclose($file);
    echo $file;
    if(is_writable("/accounts/logs")){
        echo "It is writable";
    } else{
        echo "It isn't writable";
    }
}

我真的很困惑为什么这不起作用:S

固定版本:

if($user != "ManselD"){
ini_set('date.timezone', 'Europe/London');
$ip = $_SERVER['REMOTE_ADDR'];
$txt = "$user Logged In With The Ip: $ip At ".date("h:i")."\n";
$url = getcwd() . '/accounts/logs/'.trim(date('F')."-".date('d')."-".date('Y').".txt");
file_put_contents($url, $txt, FILE_APPEND);
}

【问题讨论】:

  • 在 fopen() 之后测试 $file 的值将是一个开始;通过代码测试 is_writeable() 的 /accounts/logs 目录;你启用了 display_errors 吗?
  • 我也会查看错误日志文件,看看是否有错误
  • !$_SESSION['CurrentUser'] == "ManselD" 不会像您认为的那样做。这相当于(!$_SESSION['CurrentUser']) == "ManselD",你很可能想要$_SESSION['CurrentUser'] != "ManselD"
  • 好的,我把这个: if(!$user == "ManselD"){ ini_set('date.timezone', 'Europe/London'); $ip = $_SERVER['REMOTE_ADDR']; $txt = "$user 使用 Ip 登录:$ip At ".date("h:i")."\n"; $url = "/accounts/logs/".trim(date('F')."-".date('d')."-".date('Y').".txt"); $file = fopen($url, "a"); fwrite($file, $txt); fclose($文件);回声$文件; if(is_writable("/accounts/logs")){ echo "它是可写的"; }else{ echo "它不可写"; } } 它什么也没输出,我添加了“ini_set('display_errors','1');”在脚本 D 的顶部:
  • @ManselD:if(!$user == "ManselD") 又错了!这就像做((!$user) == "ManselD"),它将$user 转换为布尔值(并将其反转)。使用($user != "ManselD")

标签: php file-io fopen fwrite


【解决方案1】:

我认为问题(你要问的问题,因为如果你阅读 cmets 会有更多问题)是你写的

$url = "/accounts/logs/".trim(date('F')."-".date('d')."-".date('Y').".txt");

文件路径不是 URL。虽然上面显然不是 URL,但它可能不应该有起始斜杠 (/)。
一个好的方法是始终使用绝对路径,可能使用__FILE__ 常量。

【讨论】:

  • 我支持这个。我个人使用 getcwd() 来获取当前的工作目录路径,然后我从那里添加任何路径。例如:$url = getcwd() . '/myFolder/' . $whateverFileName
  • 谢谢。我通常会避免使用该功能,因为我为 Joomla 编写代码,并且我的扩展安装在您永远不知道在您自己之前调用的最后一个扩展对当前工作目录做了什么的环境中,您永远无法确定那是什么是。 :)
  • Hrm,好吧,现在它说它不可写...我正确设置了 CHMOD。它应该可以工作:/
  • @mavrosxristoforos 什么?大声笑我不知道你在说什么。很高兴我没有参与任何 Joomla。 :P jk 我想我知道你的意思
猜你喜欢
  • 2021-02-16
  • 1970-01-01
  • 2015-05-24
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多