【问题标题】:Reading file from php module fails with errno 13从 php 模块读取文件失败并显示 errno 13
【发布时间】:2012-04-26 19:49:56
【问题描述】:

美好的一天。
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 运行时 - 它不会。
有人知道为什么吗?

谢谢

【问题讨论】:

  • 尝试在 apache 用户下运行相同的 php 命令,看看会发生什么,对我来说似乎是权限问题
  • 您可以通过将您的 apache 用户组更改为与 root 相同的组来尝试吗?
  • 如果我打印getuid()getgid(),它们都是0(意味着我是root)。并且仍然被拒绝访问。如果我将文件放入 /etc - 它可以工作。但不在 /tmp 中。奇怪:(

标签: php linux apache module


【解决方案1】:

发现问题。 用户权限策略由 SELinux 强制执行。 要禁用它,我输入 #setenforce 0
#service httpd restart

现在可以使用

【讨论】:

  • 这是错误的原因。解决方案取决于我的需要。
猜你喜欢
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2023-03-18
  • 2015-03-27
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多