[英]Equivalent of asp.net's ResolveUrl in php
在我的 apache www 目录中,我有我从事的不同个人项目的子目录。 前任:
www/webApp1 www/webApp2
我通过http://localhost:81/webApp2
访问 webApp2 (我目前运行便携式 wamp,这就是我在端口 81 上的原因。现在没关系......)
我在这里没有使用虚拟主机,也许我应该使用,但我对此了解不多。
所以对于我的 webbApp2,我有文件util/files.php
和以下 function:
function BaseUrl ()
{
$baseDir = dirname(dirname(__FILE__));
$pos = strrpos($baseDir, '\\');
if (!$pos)
{
$pos = strrpos($baseDir, '/');
}
$theDir = substr ($baseDir, $pos + 1);
if ($theDir == 'public_html')
{
$theDir = '~johnny5'; //Hmmmmm...
}
return 'http://'.$_SERVER["HTTP_HOST"].'/'.$theDir;
}
我可以从任何 php 文件中调用此方法来“解决”url。
require_once("util/files.php");
$myUrl = BaseUrl ().'/someFolderAtTheRootOfWebApp2/myfile.css';
$css = $baseUrl.'/css/tab.css';
然后$css
是"http://localhost:81/webApp2/someFolderAtTheRootOfWebApp2/myfile.css"
。 例如,这样我可以动态生成指向我的 css 或 javascript 文件的链接。
在 asp.Net 中,我会写string url = Page.ResolveUrl ("~/folder/file.css");
.
它确实有效,但我想知道是否有更优雅的方式来做到这一点。 也许 php 中内置了一些东西来处理这个问题。 更重要的是,当我在 Linux 框下运行应用程序时,您可以看到带有public_html
的补丁来处理我的用户目录。 这不是真正的便携。
有什么建议么?
你到底想做什么? 获取文件的绝对 url? 如果是这样,你必须自己做逻辑 - 因为 php 并没有真正集成到 apache 中,所以不知道你的服务器结构。
在这种情况下使用 ini_set 和 ini_get 是个好主意吗?
ini_set('include_class_path', 'http://'.$_SERVER["HTTP_HOST"]."/Project/lib/");
ini_set('include_controls_path', 'http://'.$_SERVER["HTTP_HOST"].'Project/controls/');
echo $get = ini_get('include_class_path');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.