当使用 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/