PHP - 读取和写入TXT文件的函数

时间:2014-07-17 18:24:10

标签: php wordpress

我正在WordPress上创建一个函数来获取robots.txt文件的内容。如果该文件不存在,请使用默认内容创建该文件。我会将它用于我的选项页面。好吧,这是我的代码,它应该可以工作几乎创建文件,但它不会:

function get_robots($robots_file) {

$robots_file = get_home_path() . 'robots.txt'; //The robots file.
$dir = get_home_path(); //The root directory

if(is_file($robots_file)){
    $handle = fopen($robots_file, "r");
    $robots_content = fread($handle, filesize($robots_file));        
    fclose($handle);

} else {
    $default_content = "User-agent: *\nDisallow:";
    chmod($dir, 0777);
    $handle = fopen($robots_file, "w+");
    $robots_content = fwrite($handle, $default_content);        
    fclose($handle);

}

chmod($dir, 0744);
return $robots_content;

}

我不确定问题是is_file,还是fopen($robots_file, "w+"之后的else(应该是“r”?)。而且我不确定权限。需要777吗? 744是WordPress根目录的默认值吗?

我使用return稍后将其用作变量;我想fopen已经在创建文件了。我是对的吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

首先,我会使用完全不同的功能,您可以使用file_put_contents()file_get_contents()进行此类简单操作。

因此可能更简单的解决方案是:

function get_robots() {

$robots_file = get_home_path() . 'robots.txt'; //The robots file.


if(file_exists($robots_file)){
    return file_get_contents($robots_file);

} else {
    $default_content = "User-agent: *\nDisallow:";
    file_put_contents($robots_file, $default_content);
    return $default_content;
}

}

我认为将$robots_file作为函数参数传递没有任何意义,所以我删除了它。您应该检查此代码是否有效。

我也没有看到您在代码中显示的更改$dir权限的任何理由。它应该手动设置,你绝对不应该在这样的功能中更改你的根目录权限。

修改

因为此功能使用get_home_path()并且这个功能可能仅在管理面板上可用,所以您必须以不同的方式执行此操作。您可以将以下代码添加到index.php文件的末尾:

function get_robots($path)
{
    $robots_file = $path . DIRECTORY_SEPARATOR . 'robots.txt'; //The robots file.
    if(file_exists($robots_file)){
        return file_get_contents($robots_file);

    } else {
        $default_content = "User-agent: *\nDisallow:";
        file_put_contents($robots_file, $default_content);
        return $default_content;
    }
}

get_robots(getcwd());

(当然,如果您愿意,可以将get_robots()功能移动到其他文件中。

但是你应该考虑这是否是最佳方法。每次查看您的网站时都会运行此功能,而且浪费很少(实际上您可能只想创建一次robots.txt文件)。例如,您可以创建robots.php文件,如果要运行它,可以运行http://yourwordpressurl/robots.php。这当然是你的电话。