php根目录无法访问,php访问根目录有问题?

我用的系统是CentOS,网站根目录是/var/www/html,根目录放有head.inc.php,当我在index.php里require('head.inc.php')时一切正常,require('./head.inc.php')时也正常,就是require('/head.inc.php')时候发现failed to open stream: No such file or directory的错误

前面的斜杠代表的是根目录,难道我设置有误?Apache的DocumentRoot和Directory都设置成了/var/www/html,www,html和文件都设置成了rwxr-xr-x,还有其他需要设置的吗?谢谢!

回复讨论(解决方案)

require('/head.inc.php') 指 /var/www/html/head.inc.php 也就是php认为head.inc.php是一个在html路径下的目录,而不是一个php文件。

或者你可以这样写:require(dirname(__FILE__).'/head.inc.php')

require 使用的是文件系统的路径而不是 web 的路径

谢谢changjay和xuzuning,但是dirname(__FILE__)获取的是当前文件的路径吧?我要获取根目录,例如有个子目录文件/var/www/html/report/index.php同样也要reqire根目录下的head.inc.php,如果用dirname(__FILE__)的话,就变成了require '/var/www/html/report/head.inc.php'

版主提到的是文件系统的路径,我想可能是这个原因,我试下改成/var/www/html/head.inc.php

是不是你这个网站节点的根目录没配置好!

版主,我试着改成了文件系统目录,可以了

zmzkkk,我已经把Apache的DocumentRoot和Directory都设置成了/var/www/html,还有其他要修改的吗?

网上说用/就表示根目录,好像include也是按文件系统目录的,这个问题google了半天也很少人提及

大家还有什么更好的解决办法?晚上结贴

是的 / 表示根目录

既然你的在做网站,那么你就不得不面对两个系统,也就是有两个根

网站的文件存放在操作系统的文件系统中, /var/www/html, /是文件系统的根

浏览器访问的是 http://localhost /index.php, /是 web 系统的根

web 系统的根是由你在 web 服务器中指定的,如

DocumentRoot = /var/www/html

其实 php 已经给出了解决方案:include_path

谢谢changjay和xuzuning,但是dirname(__FILE__)获取的是当前文件的路径吧?我要获取根目录,例如有个子目录文件/var/www/html/report/index.php同样也要reqire根目录下的head.inc.php,如果用dirname(__FILE__)的话,就变成了require '/var/www/html/report/head.inc.php'

版主提到的是文件系统的路径,我想可能是这个原因,我试下改成/var/www/html/head.inc.php

如果有配置文件的话,可以在配置文件里先把网站根目录赋值给一个变量,然后在需要的地方使用。

谢谢版主,但是我改了/etc/php.ini的include_path=".:/var/www/html",还是会出现:

Fatal error: require() [function.require]: Failed opening required '/head.inc.php' (include_path='.:/var/www/html') in xxx

我改后重启了linux,确认var,www,html以及html下面所有文件都是755,关闭了SeLinux(getenforce=permissive),但是还是错误。改成了你说的require('/var/www/html/head.inc.php')就可以,我再查查

Novolee,我也想过一个全局变量,但是绝对路径还是会泄露到php代码里

发现还有个变量$_SERVER['DOCUMENT_ROOT'],我用这个变量替代/又可以了

就是直接用/为什么还不可以

发现还有个变量$_SERVER['DOCUMENT_ROOT'],我用这个变量替代/又可以了

就是直接用/为什么还不可以

接受??及大?的做法: 使用你最早的方式 ./ 除非你的是打算在命令行下?行的?本那麽就??路??全.

发现还有个变量$_SERVER['DOCUMENT_ROOT'],我用这个变量替代/又可以了

就是直接用/为什么还不可以

前面不是有人回答了吗?直接用/,表示的是操作系统文件系统的根目录,而不是站点的根目录。

PhpNewnew,我的网页有好几层,但是header.inc.php,css样式表全部放在根目录里,所以直接用根目录加载这些会方便很多。./只能读取到当前目录

Novolee,是,但是php里就必须写成/var/www/html/head.inc.php了,有点担心这样的路径会不会不小心显示到网页里,所以还是用'DOCUMENT_ROOT了

谢谢大家,结贴 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值