Php 使用文本文件存储数据
我想从我的PHP应用程序读写一些数据到文本文件。这只是少量的数据。真的只是配置 我担心的是我无法控制部署环境。这将是一个由服务器、mac和windows组成的混合包。它们都将运行PHP5.3及更高版本。mac服务器将使用apache,windows服务器将运行IIS 我不希望客户打电话询问与服务器设置和/或文件/文件夹权限相关的问题 我很确定WordPress一直都在这样做,所以我知道这是可能做到的。问题是怎么做?有没有人有任何建议、图书馆指南或策略可以帮助我实现我的目标Php 使用文本文件存储数据,php,Php,我想从我的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!");
我认为您可能正在寻找的选项包括以下步骤: 在此安装脚本文件中创建安装文件:
你能解释一下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。