2012-02-23 143 views
0

我试图为我的PHP(CodeIgniter)应用程序创建一个安装脚本,我需要编写从用户到CI数据库conf文件的数据库信息。当然,我遇到权限问题,因为配置目录没有写权限。所以我的问题是,如果没有让用户安装我的应用程序来管理他/她自己的文件夹权限,这将如何实现。使用PHP写入文件时没有正确的权限

+0

您是否尝试过chmod'ing文件之前你写信给它?如果可能, – BenOfTheNorth 2012-02-23 12:00:08

+0

,权限系统的用法是什么? – 2012-02-23 12:00:45

+0

@你有没有试过看这个问题? – 2012-02-23 12:01:39

回答

1

他们必须有权访问Web服务器的文件夹读/写选项 - 许多主机不会让你通过FTP访问,所以你甚至不能直接使用这个解决方案 - 他们可能不得不请通过控制面板系统执行此类任务。

没有“运行此脚本,它会更改文件夹权限”代码 - 最终用户必须足够精明,才能知道如何执行此操作。

+1

虽然我基本同意, wordpress通过提供ftp证书来解决这种事情 - 如果它不能直接更新/创建相关文件(更具体地说,如果这些文件不是由web服务器用户拥有的话),它可以通过ftp来完成。这非常接近“运行此脚本,它会更改文件夹权限” – AD7six 2012-02-23 12:05:01

+0

这可能有帮助,但它看起来像解决方案不是100%好。 http://stackoverflow.com/questions/8115159/can-people-write-a-php-file-to-my-chmod-777-folder - 顺便说一句,WordPress通常是通过在网络主机上“激活它”来安装的并在那段时间他们创造适当的文件夹和什么都不需要。 – scottcarmich 2012-02-23 12:07:16

+0

这个过程在WordPress中的模式是什么,我的意思是如果他没有权限写入目录?我会想象它会像生成一个文件将它放入临时文件夹,并用temp文件替换最初的配置文件。是这样吗? – Nick 2012-02-23 12:29:32

0

你可以尝试这样的事:

- setup script checks permission on configuration files at startup 
- if the files are not writeable, ask user to manually set permission manually (using FTP) 
- after setup finishes the execution, use `chmod` command to make the files not writeable 
- after the setup is completed, ask the user to delete the setup scripts for security reasons (so the setup is not run again by someone else) 

您可以使用chmod更改文件夹/文件权限:

// Everything for owner, read and execute for others 
chmod("/somedir/somefile", 0755); 

http://php.net/manual/en/function.chmod.php

+0

这对我来说是最后一个选择,因为我真的想要避免让用户转到ftp并更改文件夹权限。 – Nick 2012-02-23 12:31:59

+0

好的,但用户将如何部署初始文件?提供一些关于用户在部署应用程序时想要做什么的更多信息 – 2012-02-23 12:37:30

+0

他们通过FTP部署应用程序,但这可以通过我的祖母完成,教他们管理文件夹权限相当困难并且增加了安全性冒险imho。另一方面,要chmod一些不是由php创建的dir,仍然需要手动授予权限。 – Nick 2012-03-02 15:16:21