我正在编写一个需要超级简单安装过程的小应用程序。版本1使用的是csv文件而不是数据库,因此v2的优先级#1正在使用sqlite。我已经在Ruby上使用了很多sqlite,并且喜欢它,但这是我第一次在PHP中使用它。
基本上,为了让SQlite3能够插入到db中,我需要同时生成database.sqlite3文件和包含它的文件夹,该文件由apache用户拥有。从阅读文档来看,这似乎是正常的。
但是,apache并不总是以同一个用户身份运行。在这里,它是'http',但我知道在Ubuntu它是'www-data',对吗?
那么,有没有一种很好的方法可以检测Apache正在运行的用户名,并更改它,或者我是否会出错?它需要是我可以放在安装脚本中的东西,因为使用这个应用程序的人不知道或关心这样的小细节。
感谢。
答案 0 :(得分:1)
我相信你是从错误的方面去做的:你需要PHP脚本可以写入SQLite数据库,因为我理解这个问题,这可能与Apache用户不同。
如果PHP作为Apache模块安装,它将继承Apache用户,但共享服务器上更常见的情况是将PHP设置为suphp
或phpsuexec
下的CGI,因此脚本运行时用户自己的权限。
我建议你编写一个install.php
脚本来创建文件夹和数据库,这样两者都将继承脚本的权限,无论它是哪个用户。查看mkdir()和sqlite_open()的手册。如果没有其他工作,那么总是chmod()。
正如您特别引用SQLite v.3,您可能希望使用phpversion()检查服务器版本;在PHP 5.3中,sqlite_ *函数适用于版本3,PHP 5.2及以下版本,而不是版本2。要在PHP 5.2中使用版本3,您必须使用pdo_sqlite。