美好的一天。
PHP 中加载了一个 PHP 模块 (.so)。在 MINIT 阶段,它尝试读取文件。
该文件是/tmp/aaa.txt
/tmp目录属于root,权限设置为777。
文件/tmp/aaa.txt属于apache用户,也设置为777权限。
模块使用 VCWD_FOPEN() 打开文件,该文件是为
定义的
#define VCWD_FOPEN(path, mode) virtual_fopen(path, mode TSRMLS_CC)
最终是一个 fopen()。
VCWD_FOPEN
失败并出现错误 13(权限被拒绝)。
奇怪的是,如果我手动调用该模块
( #php -r 'echo "hi";' )
- 它有效。
但是当它从 apache 运行时 - 它不会。
有人知道为什么吗?
谢谢
最佳答案
发现问题了。
用户权限策略由 SELinux 强制执行。
要禁用它,我输入了
#setenforce 0
#service httpd restart
现在可以使用
关于php - 从 php 模块读取文件失败,错误号 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10340407/