Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用文本文件存储数据_Php - Fatal编程技术网

Php 使用文本文件存储数据

Php 使用文本文件存储数据,php,Php,我想从我的PHP应用程序读写一些数据到文本文件。这只是少量的数据。真的只是配置 我担心的是我无法控制部署环境。这将是一个由服务器、mac和windows组成的混合包。它们都将运行PHP5.3及更高版本。mac服务器将使用apache,windows服务器将运行IIS 我不希望客户打电话询问与服务器设置和/或文件/文件夹权限相关的问题 我很确定WordPress一直都在这样做,所以我知道这是可能做到的。问题是怎么做?有没有人有任何建议、图书馆指南或策略可以帮助我实现我的目标 出于这个目的,我排除了

我想从我的PHP应用程序读写一些数据到文本文件。这只是少量的数据。真的只是配置

我担心的是我无法控制部署环境。这将是一个由服务器、mac和windows组成的混合包。它们都将运行PHP5.3及更高版本。mac服务器将使用apache,windows服务器将运行IIS

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

我很确定WordPress一直都在这样做,所以我知道这是可能做到的。问题是怎么做?有没有人有任何建议、图书馆指南或策略可以帮助我实现我的目标


出于这个目的,我排除了sqlLite,因为我不认为它在windows上默认启用,我认为它在默认情况下不再安装在php5.4 windows上。我的主要目标是能够以这样一种方式保存少量数据,从而使我的支持成本大幅增加。

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

如果我没有弄错的话,Joomla/Wordpress(至少其中一个)也给了您输入FTP凭据的机会,因此它不会通过文件系统编辑文件,而是会尝试通过FTP服务器上传编辑过的版本

您只需拥有一个必须在文本编辑器中编辑的配置文件。并使Web服务器/应用程序的文本文件为只读。但是,更改其中一个设置不能通过网站本身完成,而是需要一个人在文本编辑器中编辑文本文件


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

所有常见的大型PHP项目都是这样做的,只需为其保留一个文件夹,并在安装时检查其权限即可

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

  • 包含一个
    .htaccess
    文件,说明如果Web服务器是Apache,则
    deny from all
    ,或在其他Web服务器上使用等效的保护方法(只需
    file\u get\u contents
    ,通过要测试的公共URL)
  • (您还可以编写、读取和删除一个小样本文件以确保这一点)
  • 把你的文件放在那里,它在每个平台上都是安全和可移植的

    一些示例代码:

    $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!");
    

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

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

  • 查看目录是否可写
  • 如果没有,请询问FTP凭据
  • 确定系统类型Windows或*Nix Based
  • 建立FTP连接
  • *nix变体发送CHMOD命令Windows发送CACLS命令以使目录可写
  • 终止FTP命令

  • 你能解释一下PHP世界中哪些配置细节关心用户使用的是什么类型的操作系统吗?这可能会对你有所帮助:@kaiQing我假设他的文本文件所在的文件夹可能没有写入权限,因此向其写入配置将使系统崩溃如果我没有弄错的话,很多设置权限都包含FTP命令使用PHP FTP库安装脚本。您还需要在写入时锁定和解锁文件。@MadDok-是的,但是像drupal这样的CMS包在安装时会直接告诉您,预期的目录没有写入权限。因此,只需使用类似is_writeable()的函数在安装时进行验证。对于IIS,您需要一个web.config文件而不是.htaccess。@Toddgest不需要,但MS有一个将.htaccess文件转换为web.config的指南。@Toddgest在IIS中,您可以轻松地自动导入所有(大多数)重写规则。(这在本例中不是很重要。)web.config是否在该文件夹中?我能安装它吗?或者这是必须对IIS配置执行的操作。因为如果是这样的话,那就出局了。我不能假设用户能够做到这一点。@Toddgest似乎可以将它放在任何目录中。除了这个小文本文件之外,这里没有其他数据库:-),那么我认为最好的办法还是帮助人们理解如何使特定目录可写。甚至可能制作3部youtube小电影:win、mac、linux。