我想从我的PHP应用程序中读取和写入一些数据到文本文件。它的数据量很小。真的只是配置。
我担心的是我无法控制部署环境。它将是服务器,mac和windows的混合包。它们都将运行PHP5.3及更高版本。 mac服务器将具有apache,windows服务器将运行IIS。
我不希望客户拨打与服务器设置和/或文件/文件夹权限相关的问题。
我很确定WordPress会一直这样做,所以我知道这可以干净利落。问题是怎么样的?有没有人有任何建议,指向图书馆或有助于我实现目标的策略。
我排除了sqlLite用于此目的,因为我不认为它在Windows上默认启用,我认为默认情况下它不再安装在php5.4窗口上。我的主要目标是能够持续保存少量数据,从而通过粗糙的屋顶推动我的支持成本。
答案 0 :(得分:1)
所有常见的大型PHP项目实现它的方式就是为它预留一个文件夹,并检查其安装权限。
您可以轻松地在您的webroot中创建/gen
或/data
文件夹,并在安装/更新时检查它:
.htaccess
文件,如果网络服务器是Apache,则说明deny from all
,或者是其他网络服务器上的等效保护方法(仅通过公共网址file_get_contents
进行测试)is_writable
(您也可以编写,阅读和删除一个小样本文件以确保这一点)将您的文件放在那里,它在每个平台上都是安全和便携的。
一些示例代码:
$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)
我认为您可能正在寻找的选项包括以下步骤:
在此安装脚本文件中创建安装文件: