如何使用Curl从URL访问文件

时间:2013-02-05 07:42:02

标签: php linux apache curl permissions

-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访问该文件?

2 个答案:

答案 0 :(得分:2)

  

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

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

如果您使用curl访问php文件,则最有可能是您的网络服务器用户和组不是root:root

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

确定使用

执行用户名php
ps aux | grep "httpd" # apache environment
ps aux | grep "php"   # php fastcgi environment 

chown user:group dbm-config.ini

答案 1 :(得分:1)

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

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

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

可能有所帮助。这将把文件的拥有组设置为apache并为组提供读访问权限。如果您的网络服务器是apache,并且它正在使用它,那么这可能有所帮助。