我需要将这些锚点href标记设置为绝对路径,因为当我在文件夹中有html文档时,我包含很多东西的标题不起作用(在某些情况下需要../)。
我查看了一些建议使用的帖子:
$root = realpath($_SERVER['DOCUMENT_ROOT']);
或
$root = "http://" . $_SERVER['SERVER_NAME'];
第一个选项导致错误:
localhost /:1不允许加载本地资源:
file:///C:/xampp/htdocs/trips/index.php%7D
第二个选项导致此错误:
警告:在第17行的C:\ xampp \ htdocs \ MountainPlanner \ includes \ header.php中,allow_url_include = 0在服务器配置中禁用了include():http://包装器
警告:include(http://localhost/MountainPlanner/includes/db.php):无法打开流:在第17行的C:\ xampp \ htdocs \ MountainPlanner \ includes \ header.php中找不到合适的包装器
警告:include():无法打开' http://localhost/MountainPlanner/includes/db.php'在第17行的C:\ xampp \ htdocs \ MountainPlanner \ includes \ header.php中包含(include_path =' C:\ xampp \ php \ PEAR')
如果有所作为,我正在使用XAMPP。
谢谢!
答案 0 :(得分:1)
HREF导航栏路径!=系统路径
网址路径
这是您在浏览器地址中看到的内容,它被HTML(CSS,JavaScript等)使用。 PHP不需要担心它(除了一些流函数)。
要动态创建基本路径,我已使用此脚本
httpProtocol = !isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on' ? 'http' : 'https';
$base = $httpProtocol.'://'.$_SERVER['HTTP_HOST'].'/';
并且,当放入href
a
标记时:
<a href="<?php echo $base; ?>link" title="Link">Link</a>
系统路径
服务器用于查找服务器上的任何文件的内容。 PHP将include
/ require
用于服务器上的任何文件或共享文件。 Streams函数也可以使用系统路径和URL。
正如我所看到的,您正在询问系统路径。我已使用此代码规范化应用程序路径:
ini_set('include_path',
implode(
PATH_SEPARATOR,
array_merge(
array(dirname(__FILE__)),
explode(PATH_SEPARATOR , ini_get('include_path'))
)
)
);
然后,我的应用程序root只能用作我的应用程序的绝对路径:
/Application/Require.php
/Application/Script.php
index.php
它也适用于任何文件:
require('Application/Require.php');
require('Application/Script.php');
答案 1 :(得分:0)
将第一行设置在config或constants文件中的某个位置,甚至是文件中的第1行。
<?php $base_url = "http://localhost/mysite/"; ?>
然后你可以像这样创建href链接:
<a href="<?=base_url?>my-link">clickie</a>
答案 2 :(得分:0)
$ _ SERVER包含Web服务器填充的标头。它不可靠,它会禁止您的代码在本地或测试环境中运行。来自php.net:
$ _ SERVER是一个包含标题,路径和脚本位置等信息的数组。此阵列中的条目由Web服务器创建。无法保证每个Web服务器都能提供这些服务;服务器可以省略一些,或提供此处未列出的其他服务器。也就是说,在»CGI / 1.1规范中考虑了大量这些变量,因此您应该能够期待这些变量。
总之,不要依赖于此来提供有关您的服务器的信息。
PHP提供了魔术常量__FILE__
和__DIR__
,它们为您提供了当前文件的文件或目录的完整路径。
对于PHP包含,您应该将这些常量与您要访问的文件的相对路径一起使用。
例如:
include __DIR__ . '/../file_in_previous_directory.php';
include __DIR__ . '/file_in_same_directory.php';