[英]Public URL of a PHP page
访问时
www.example.com/test1/test2/index.php
(该文件是服务器上的/var/www/website1/test1/test2/index.php
)
我们得到:
<base href="<?php echo __DIR__; ?>">
// bad: <base href="/var/www/website1/test1/test2/">
<base href="<?php echo dirname($_SERVER['REQUEST_URI']); ?>">
// bad: <base href="/test1/test2">
// a <base href> dir must end with a / (or \ on Windows)
<base href="<?php echo rtrim(dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)), '/') . '/'; ?>">
// good: <base href="/test1/test2/">
最后一个解决方案有效(*),但我发现它有点脏/ hack。 有没有更干净的解决方案来设置<base href="...">
当前PHP文件的目录?
(*)实际上,最后一种解决方案不适用于Windows服务器,因为添加'/'会破坏<base href>
(应为'\\')。
dirname($_SERVER['SCRIPT_NAME']);
应该管用。 否则,请执行以下操作:
在PHP <5.3中:
substr(dirname(__FILE__), strlen($_SERVER['DOCUMENT_ROOT']));
或PHP> = 5.3:
substr(__DIR__, strlen($_SERVER['DOCUMENT_ROOT']));
根据您的评论进行更新:
如果脚本在Windows上运行,请使用适用于linux
的解决方案,相应地修改路径。
检测服务器操作系统:
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
echo 'This is a server using Windows!';
} else {
echo 'This is a server not using Windows!';
}
要么
if (DIRECTORY_SEPARATOR == '/') {
// linux
}
if (DIRECTORY_SEPARATOR == '\\') {
// windows
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.