将file_put_contents文件存储在安全位置

时间:2014-01-11 19:54:41

标签: php

目前,我正在使用以下内容连接到数据库:

    <?php

    try
    {
        $dbh = new PDO(
            'mysql:host=localhost;port=3306;dbname=databaseName',
            'databaseUser',
            'databaseUserPassword');

        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    }
    catch(PDOException $e)
    {
        echo "I'm sorry, Dave. I'm afraid I can't do that.";
        file_put_contents('PDOErrors.txt', "\n" . $e->getMessage(), FILE_APPEND | LOCK_EX);
    }

    ?>

这会将文本文件写入此PHP文件的相同位置,该文​​件可在我的网站上公开获取。虽然此位置未明确向用户公开,但如果有人找到此位置(例如example.com/PDOErrors.txt),那么他们就可以正常查看该文件的内容。

我的问题:这是处理此问题的正确方法吗?我可以用密码保护目录吗?我可以在网站之外的某个地方写一个不公开的文件(比如网站上方的根文件夹)吗?

我需要能够访问PHP文件来访问我的数据库(我在游戏中为排行榜类型的东西做这个)但输出文件应该只对我有用。

2 个答案:

答案 0 :(得分:1)

这样做的一个好方法是将无法从外部访问的所有内容放在无法访问的文件夹中。

例如,你有这样的结构:

/nameofproject
  - /data
    - /logs
  - /library
  - /public
    - index.php <- www.example.com would point to this

然后你必须配置你的vhost和你的.htaccess。您可以看看Symfony 2或Zend Framework 2是如何做到的。

答案 1 :(得分:0)

.htacces受保护文件夹的代码:

order deny,allow
deny from all