使用文本文件存储数据

时间:2013-05-22 15:53:01

标签: php

我想从我的PHP应用程序中读取和写入一些数据到文本文件。它的数据量很小。真的只是配置。

我担心的是我无法控制部署环境。它将是服务器,mac和windows的混合包。它们都将运行PHP5.3及更高版本。 mac服务器将具有apache,windows服务器将运行IIS。

我不希望客户拨打与服务器设置和/或文件/文件夹权限相关的问题。

我很确定WordPress会一直这样做,所以我知道这可以干净利落。问题是怎么样的?有没有人有任何建议,指向图书馆或有助于我实现目标的策略。

我排除了sqlLite用于此目的,因为我不认为它在Windows上默认启用,我认为默认情况下它不再安装在php5.4窗口上。我的主要目标是能够持续保存少量数据,从而通过粗糙的屋顶推动我的支持成本。

3 个答案:

答案 0 :(得分:1)

所有常见的大型PHP项目实现它的方式就是为它预留一个文件夹,并检查其安装权限。

您可以轻松地在您的webroot中创建/gen/data文件夹,并在安装/更新时检查它:

  1. 包含一个.htaccess文件,如果网络服务器是Apache,则说明deny from all,或者是其他网络服务器上的等效保护方法(仅通过公共网址file_get_contents进行测试)
  2. is_writable(您也可以编写,阅读和删除一个小样本文件以确保这一点)
  3. 将您的文件放在那里,它在每个平台上都是安全和便携的。

    一些示例代码:

    $docroot = $_SERVER['DOCUMENT_ROOT'];
    $dataroot = $docroot.'/data';
    $testfile = $dataroot.'/test.txt';
    $publicURL = $youHaveThisSomewhere.'/data/test.txt';
    if(!is_dir($dataroot))
      die("The required data folder is not present at $dataroot");
    if(!is_writable($dataroot) || file_put_contents($testfile, 'test') === FALSE)
      die("Data path ($dataroot) is not writable, make it so!");
    if(file_get_contents($publicURL) !== FALSE)
      die("Data path is publicly accessible, go fix it!");
    if(!unlink($testfile))
      die("I also need delete rights in the data folder!");
    
    die("Installation successful!");
    

答案 1 :(得分:0)

是的,但即使使用Wordpress,您也必须担心某些文件和目录可写(chmod,Windows文件权限等)。

如果我没有误会Joomla / Wordpress(至少其中一个)也让你有机会输入FTP凭据,所以不是通过文件系统编辑文件,它会尝试上传编辑后的版本FTP服务器。

您可以做的是拥有一个必须在文本编辑器中编辑的配置文件。并且只为web服务器/应用程序读取文本文件。但是后来改变其中一个设置不能通过网站自己完成,但需要一个人在文本编辑器中编辑文本文件。

如果您已经在使用数据库,那么数据库设置只需要在配置文件中。其余的可以存储在数据库中。

答案 2 :(得分:0)

我认为您可能正在寻找的选项包括以下步骤:

在此安装脚本文件中创建安装文件:

  1. 查看目录是否可写
  2. 如果没有要求提供FTP凭据
  3. 确定系统类型Windows或* Nix bassed
  4. 建立FTP连接
  5. * nix variants发送CHMOD命令Windows发送CACLS命令使目录可写
  6. 终止FTP命令