3 回答
TA贡献1851条经验 获得超3个赞
在windows浏览器地址直接输入该php文件
检查执行结果是否如下警告:
Warning: fopen(xxx.txt): failed to open stream: Permission denied in /usr/local/www......
这是因为默认下selinux是开启的,会阻值修改文件。
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
另外,如果以上还是不能解决的话要设置一下目录的权限策略
chcon -R -t httpd_sys_content_t /home/html
TA贡献1820条经验 获得超2个赞
翻译:
file_put_contents(/PHP/admin/tp/runtime/temp/71dafaa2a0ea0d586666de9d67f301a7.php):无法打开流:权限被拒绝
解决办法:
文件或目录需要的权限是很大的,如果你只给一般权限肯定是不行的,通常都是给runtime权限:777
TA贡献1806条经验 获得超5个赞
1、查看一下你写入的文件路径是否正确
2、那个文件是否有写入的权限
3、file_put_contents方法是否存在
依据你给的代码图片,将其修改了一下,你试试看看行不行:
<?php if ( $_POST [ 'Submit' ] == '注册' ){ $a = 'file.txt' ; $c = $_POST [ 'user' ]; // 如果$c是一个数组,先foreach循环 - 组装成需要写入发内容 if ( is_array ( $c )){ foreach ( $c as $k => $v ) { $html = '这是写入的内容' . "\r\n" ; $html .= '写入的内容要是字符串!' . "\r\n" ; $html .= '.....' ; } $c = $html ; } // 写入 if ( file_exists ( 'file_put_contents' )){ file_put_contents ( $a , $c ); } else { $handle = fopen ( $a , 'w+' ); fwrite( $handle , $c ); fclose( $handle ); } } ?> |
- 3 回答
- 0 关注
- 884 浏览
添加回答
举报