0
-rw-r--r-- 1 root      root        514 Jan 15 04:03 curl.php
-rw-r----- 1 root      root       1344 Feb  5 02:09 dbm-config.ini
-rw-r--r-- 1 root      root       5149 Feb  5 02:19 mysql-connectivity-status.php

在这里,我正在从 url 访问文件“mysql-connectivity-status.php”,例如
http://<ip>/html/DB-Monitoring/mysql-connectivity-status.php.

mysql-connectivity-status.php我已经调用了文件dbm-config.ini。通过 URL 访问时,我收到以下警告。

Warning: parse_ini_file(/var/www/html/DB-Monitoring/dbm-config.ini): failed to open stream: Permission denied in /var/www/html/DB-Monitoring/mysql-connectivity-status.php on line 113

所以,我不想更改权限dbm-config.ini但是如何使用 URL 访问文件?

4

2 回答 2

2

-rw-r----- 1 root root 1344 Feb 5 02:09 dbm-config.ini

该文件可以由用户 rootrw-读取和写入,并且可以由组 root 的成员读取r--

如果您使用 curl 访问 php 文件,这很可能会使用您的 webservers 用户和组执行,而不是root:root

这就是php无法读取ini文件的原因。我建议将文件移出您的文档根目录,以便无法直接从网络访问,然后将所有者更改为您的网络服务器用户和组

确定执行用户名 php

ps aux | grep "httpd" # apache environment
ps aux | grep "php"   # php fastcgi environment 

chown user:group dbm-config.ini
于 2013-02-05T08:22:26.857 回答
1

问题是您的网络服务器无法访问该文件。如果您无法修复,则无法通过该网络服务器远程访问它。:)

疯狂的猜测,因为我不知道你在使用什么:

chown root:apache dbm-config.ini
chmod g+r dbm-config.ini

可能有帮助。这会将文件的所属组设置为 apache 并授予该组读取权限。如果您的网络服务器是 apache 并且它使用的是正确的组,这可能会有所帮助。

于 2013-02-05T07:56:04.710 回答