杭州神话信息技术有限公司

标题: liunx系统下无法运行 [打印本页]

作者: ok郎君    时间: 2011-7-28 18:38:59     标题: liunx系统下无法运行

本帖最后由 ok郎君 于 2011-7-30 19:03 编辑

采用redhat系统,上传程序后运行时一直提示“模板无法写入,请检查目录是否有可写”,但所有的文件夹和文件都已经是777权限,到底是什么问题??????

作者: ok郎君    时间: 2011-7-30 19:01:24

这个问题最后还是找到解决的办法了,上来个大家分享一下。

可能不少人的项目运行使用的是别人提供的空间(或者自己的服务器已经有人做好了设置),所以没有遇到这个问题,我们不同,是在自己的服务器上进行部署,系统安装等一系列操作都得从头开始,用的是linux系统,至于现象就不在多说了,相信有的人和我们有相同的经历,必须把项目中的cache文件夹的拥有者改为root,并且拥有777权限才能正常运行,但项目没过一段时间会清空缓存(也可能是后台操作),导致项目无法运行,这个问题导致项目从理论上来讲根本不能部署出去进行正式运营。

原因:linux系统的SElinux安全策略设置默认禁止了apache用户(daemon)的写权限。

我们在最开始处理这个问题时,就怀疑可能是apache的用户(默认用户daemon)被系统禁止,所以创建了新用户apachemanager,并且修改了apache的配置文件,用新建用户替代了apache默认用户daemon,还尝试过其他方法(甚至修改代码),都以失败告终。近日在网上看到有人提出一个问题,也是文件的读写问题,说最后是关掉防火墙和SELinux安全策略才解决的,这种方法当然不可取,但给了我们一个提示,防火墙和SELinux的设置可能有一些影响,打开SELlinux设置选项后,居然发现linux有一个相当重要的设置,简单翻译一下:是否允许daemon用户拥有对文件的写权限,而daemon用户正是apache的默认用户(安装apache时会自动创建),将对应选项选中即可。设置位置顺序如下:系统->管理->SELinux Management->Boolean->HTTDP Service->Allow httpd daemon to write files in......(以Redhat5为例,不同版本位置可能不同),假如无法进行可视化操作,只能远程连接操作,则该设置对应字段名称为:allow_httpd_anon_write,操作命令setsebool -P allow_httpd_anon_write=1。如此即可。最后补充一点,不要随意修改apache的默认用户,后果很糟糕。

之前是搞java开发的,这次是第一次接触php,从二次开发到项目部署可以说是历经艰辛,还好,最终还是如期上线。





欢迎光临 杭州神话信息技术有限公司 (http://www.cenwor.com/) Powered by Discuz! X2