我從來沒有遇到過PHP能夠在組和用戶設置正確時讀取文件的問題。即使使用777權限和文件+目錄中的正確組,PHP要求權限也被拒絕
Apache正在www-data用戶下運行,所以我用777 chmod將所有的一切(組和用戶權限)設置爲www-data,但仍然沒有任何工作。
不知道發生了什麼事。
PHP未進入安全模式。
代碼:
require ('/root/app/class/api.php');
文件系統:
$ pwd
/root/app/class
$ ls -la
total 76
drwxrwxrwx 2 www-data www-data 4096 Oct 8 10:59 .
drwxrwxrwx 9 www-data www-data 4096 Sep 25 21:25 ..
-rw-r--r-- 1 root root 26896 Jan 13 2014 something_else.php
-rw-rw-r-- 1 root root 32807 Mar 11 2015 something.php
-rwxrwxrwx 1 www-data www-data 3439 Mar 3 2015 api.php
錯誤:
Warning: require(/root/app/class/api.php): failed to open stream: Permission denied in /var/www/website.com/htdocs/app_frontend/include/config.php on line 36
Fatal error: require(): Failed opening required '/root/app/class/api.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/website.com/htdocs/app_frontend/include/config.php on line 36
試圖調試:
error_reporting(E_ALL);
ini_set('display_errors','On');
$file = '/root/app/class/api.php';
echo sprintf ('%o', fileperms ($file)), PHP_EOL;
echo posix_getpwuid (fileowner ($file)), PHP_EOL; // Get Owner
echo posix_getpwuid (posix_getuid()), PHP_EOL; // Get User
if (is_file ($file)) {
echo "is_file", PHP_EOL;
;
}
if (is_readable ($file)) {
echo "is_readable", PHP_EOL;
;
}
if (is_writable ($file)) {
echo "is_readable", PHP_EOL;
}
fopen ($file, "w");
結果:
Warning: fileperms(): stat failed for /root/app/class/api.php in /var/www/website.com/...
Warning: fileowner(): stat failed for /root/app/class/api.php in /var/www/website.com/...
編輯:有我的服務器上沒有啓用SELinux的,這裏的apachectl的輸出DUMP_MODULES
$ /usr/sbin/apachectl -t -D DUMP_MODULES
Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
filter_module (shared)
mime_module (shared)
mpm_prefork_module (shared)
negotiation_module (shared)
php5_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)