首页 / PHP / PHP:文件写入权限
PHP:文件写入权限
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP:文件写入权限,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4241字,纯文字阅读大概需要7分钟。
内容图文
![PHP:文件写入权限](/upload/InfoBanner/zyjiaocheng/780/f54cfc1062dd4e75bd0527016160bc48.jpg)
因为这个原因,我现在已经敲了很长时间…
我正在尝试在我的虚拟服务器(CentOS 7,apache http服务器,php 5.4.3)上安装MyBB论坛,我遇到了文件权限问题. MyBB需要两个文件可写,其中一个是config.php,第二个是settings.php,它们都在目录inc中.
我将这两个文件的权限设置为666.我写了一个简单的测试php页面,模仿MyBB测试写入能力的方式:
<?php
echo('config: ');
$configwritable = @fopen('forum/inc/config.php', 'w');
if ($configwritable) {
echo('yes');
} else {
echo('no');
}
echo('<br/>');
echo('settings: ');
$configwritable = @fopen('forum/inc/settings.php', 'w');
if ($configwritable) {
echo('yes');
} else {
echo('no');
}
?>
页面输出是
config: no
settings: yes
但如果我列出文件,它们就会显示出来
root@localhost# ls -l forum/inc/config.php forum/inc/settings.php
-rw-rw-rw-. 1 krkavec krkavec 0 2.??íj 22.49 forum/inc/config.php
-rw-rw-rw-. 1 krkavec krkavec 0 2.??íj 22.51 forum/inc/settings.php
这怎么可能?这两个文件属于同一个用户,属于同一个组,具有相同的大小(零),位于同一目录中,具有相同的权限,具有几乎相同的修改时间(相差两分钟)以及几乎所有其他内容除外他们的名字是一样的.
为了让事情变得更加奇怪,我尝试再次删除和创建文件,观看:
1:删除这两个文件
root@localhost# rm -f forum/inc/config.php forum/inc/settings.php
和页面输出:
config: no
settings: no
这是好的,因为inc目录不应该是可写的.
2:创建settings.php
root@localhost# F=forum/inc/settings.php ; touch $F ; chown krkavec:krkavec $F ; chmod 666 $F
root@localhost# ls -l forum/inc/settings.php forum/inc/config.php
ls: cannot access forum/inc/config.php: No such file or directory
-rw-rw-rw-. 1 krkavec krkavec 0 2.??íj 23.15 forum/inc/settings.php
和页面输出:
config: no
settings: yes
这是完全正常和预期 – 文件在那里,并具有可写权限.
3:创建config.php
root@localhost# F=forum/inc/config.php ; touch $F ; chown krkavec:krkavec $F ; chmod 666 $F
root@localhost# ls -l forum/inc/settings.php forum/inc/config.php
-rw-rw-rw-. 1 krkavec krkavec 0 2.??íj 23.23 forum/inc/config.php
-rw-rw-rw-. 1 krkavec krkavec 0 2.??íj 23.15 forum/inc/settings.php
和页面输出:
config: no
settings: yes
BAM!我完全希望配置是可写的.
任何帮助是极大的赞赏.
编辑:我根据Marc B和drew010的建议修改了测试页面
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo('config var_dump: ');
var_dump(stat('forum/inc/config.php'));
echo('<br/>config: ');
$configwritable = fopen('forum/inc/config.php', 'w');
if ($configwritable) {
echo('yes');
} else {
echo('no');
}
echo('<br/>');
echo('settings var_dump: ');
var_dump(stat('forum/inc/settings.php'));
echo('<br/>settings: ');
$configwritable2 = fopen('forum/inc/settings.php', 'w');
if ($configwritable2) {
echo('yes');
} else {
echo('no');
}
?>
页面的输出(两个文件都存在)是:
config var_dump: array(26) { [0]=> int(64768) [1]=> int(19155212) [2]=> int(33206) [3]=> int(1) [4]=> int(1000) [5]=> int(1000) [6]=> int(0) [7]=> int(0) [8]=> int(1443821772) [9]=> int(1443821772) [10]=> int(1443821772) [11]=> int(4096) [12]=> int(0) ["dev"]=> int(64768) ["ino"]=> int(19155212) ["mode"]=> int(33206) ["nlink"]=> int(1) ["uid"]=> int(1000) ["gid"]=> int(1000) ["rdev"]=> int(0) ["size"]=> int(0) ["atime"]=> int(1443821772) ["mtime"]=> int(1443821772) ["ctime"]=> int(1443821772) ["blksize"]=> int(4096) ["blocks"]=> int(0) }
config:
Warning: fopen(forum/inc/config.php): failed to open stream: Permission denied in /var/www/html/test.php on line 8
no
settings var_dump: array(26) { [0]=> int(64768) [1]=> int(19155069) [2]=> int(33206) [3]=> int(1) [4]=> int(1000) [5]=> int(1000) [6]=> int(0) [7]=> int(0) [8]=> int(1443821763) [9]=> int(1443823158) [10]=> int(1443823158) [11]=> int(4096) [12]=> int(0) ["dev"]=> int(64768) ["ino"]=> int(19155069) ["mode"]=> int(33206) ["nlink"]=> int(1) ["uid"]=> int(1000) ["gid"]=> int(1000) ["rdev"]=> int(0) ["size"]=> int(0) ["atime"]=> int(1443821763) ["mtime"]=> int(1443823158) ["ctime"]=> int(1443823158) ["blksize"]=> int(4096) ["blocks"]=> int(0) }
settings: yes
解决方法:
由于一些神奇的,未知的原因,当我将settings.php重命名为config.php然后创建新的settings.php并正确设置权限时,两个文件都是可写的.
但是,我不知道为什么必须重命名该文件.除了工作之外,结果与问题中描述的步骤3之后的结果相同.
任何建议为什么要做这顶帽子及其背后的原因是非常受欢迎的.
编辑:它是由SELinux安全上下文导致的,它阻止了apache写入文件.运行chcon -t httpd_sys_rw_content_t config.php解决了这个问题.
内容总结
以上是互联网集市为您收集整理的PHP:文件写入权限全部内容,希望文章能够帮你解决PHP:文件写入权限所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。