PHP:在 CLI 和 Apache 之间使用 is_readable() 的结果不同

标签 php linux file

当使用 is_readable() 函数获取本地文件是否可读时,我从浏览器运行时获得的结果与从命令行运行时获得的结果不同。

脚本使用:

<?php
var_dump(php_ini_loaded_file());
var_dump(phpversion());
var_dump(posix_getuid());
var_dump(is_readable('/dev/shm/rrds'));
?>

我正在检查相同的 php.init 文件、phpversion 和用户,所有这些都相等,并且对于来自浏览器的 is_readable() 和来自 cli 的 is_readable() 仍然是 false。

浏览器输出:

string(12) "/etc/php.ini" string(5) "5.3.3" int(48) bool(false)

命令行输出

string(12) "/etc/php.ini"
string(5) "5.3.3"
int(48)
bool(true)

/dev/shm/rrds 的权限:drwxr-xr-x。

/dev/shm 作为 tmpfs 安装在/dev/shm 类型的 tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")

有人知道为什么吗?!

最佳答案

Apache 用户是 www-data。 Cli 用户是运行命令的用户。

识别运行cli命令的用户

whoami

从 www-data 运行命令

sudo -u www-data command

关于PHP:在 CLI 和 Apache 之间使用 is_readable() 的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32764487/

相关文章:

php - 将文件从 IPhone/IPad 上传到 mysql 数据库?

php - 如何在已解析的 HTML 数据中查找元素

php - 在 php 中使用多维数组的 Redis

linux - 如何找到所有可运行的进程

linux - 错误 : docker-engine-selinux conflicts with 2:container-selinux?

matlab - 如何在MATLAB中获取特定目录下的所有文件?

c++ - 从文件中读取第 n 行的快速方法

java - 如何在 Java 中按 Enter 键进入文件

javascript - 当用户提交 PHP 表单时,如何将文本文件发送到网站上所有打开的浏览器

Linux:全屏运行应用程序(不是在窗口中)