当我使用require("/toinclude.php")
时,“/”是什么意思?
它是我的ubuntu的根目录吗?
还是我的www目录apacheset?
还是当前文件的路径?这似乎是真的......
更重要的是,我真的对PHP中使用路径感到困惑。是require()
/ include()
中的“/”表示当前目录,system(...)
/ exec(...)
中的“/”是
Linux的根目录,html代码<form action="/processpost.php">
中的“/”是Apache为我设置的“www”目录?
答案 0 :(得分:2)
在PHP(服务器端)中,以/
开头的任何路径(至少在基于Unix的系统上)都是文件系统根。在大多数(如果不是全部)情况下,这是不你想要的。
在HTML(客户端)中,&#39; /&#39;是URL根目录。即:它直接放在域名之后。例如。从/process.php
获取的HTML文件中的http://example.com
将重定向到http://example.com/process.php
。此可能是www-root,但也可能是其他内容,具体取决于服务器中的设置。
include
和require
使用包含路径来获取文件。如果您没有提供完整路径(即,您在开头省略了/
),PHP将从当前目录开始扫描它在其包含路径中找到的所有目录。通常,PEAR模块的路径在该路径中,因此代码如下:
include("SomePearModule/Module.class.php");
有效,即使它不在您的网站树上。
documentation可以找到更多内容。
答案 1 :(得分:1)
它是文字服务器端(文件系统)路径。好吧,不是总是字面意思。
这取决于您的服务器设置。如果PHP在一个被监禁的chroot中运行,那么/
就PHP来说它实际上可能是/var/web/chroots/domain.com/
或类似的东西。
大多数情况下,您需要某种配置文件,根据脚本实际执行的相对路径确定库和内容的位置,然后将该信息传递给require()
和require_once()
分别。
类似的东西:
<?php
$base = dirname(__FILE__);
$Libraries = $base . '/libraries';
require_once($Libraries . '/Library.php');
?>
如果您使用任何类型的现代框架,通常会通过它为加载内容提供的任何方式为您处理。确保拨打require()
或require_once()
的所有电话都不必根据您安装应用的位置进行更改,这一切都很好,这一切都与...相关它被执行了。