定义文件目录; XAMPP

时间:2012-03-25 00:44:41

标签: php macos directory xampp

我正在运行XAMPP for Mac。

当我第一次开始使用PHP时,我会用变量定义我的目录:

 $root = "http://localhost/~aaron/SiteFolder/"; // Dev
 $root = "http://www.sitename.com/";            // Live

这会有效,但根据我是否正在编辑开发网站或实时网站,这是一个很大的烦恼,不得不评论一个。

我正在慢慢过渡到OOP习惯,并希望尽可能提高效率。所以我试图用当前目录定义ROOT,如下所示:

define("ROOT", dirname( __FILE__ ) . DIRECTORY_SEPARATOR);

输出:

/Users/aaron/Sites/SiteFolder/

当我在开发网站上工作时,这对我来说并不完全有用,因为我希望能够使用ROOT作为我的图像,文件等的前缀。

这显然不起作用:

<img src="/Users/aaron/Sites/SiteFolder/images/charizard.png">

如何解决此问题以正确定义目录,我需要做些什么?

3 个答案:

答案 0 :(得分:0)

由于这是图片代码的网址,您不能只将图片根目录定义为define('ROOT', '/images/')吗?

目前您正在获取目录路径。

编辑:

抱歉,我误解了这个问题。假设您正在讨论要链接到的网络服务器上的图像等公共资源。

然后你可以将你的root定义为你的基本网址吗?

define('ROOT', 'http://localhost/')define('ROOT', 'http://dev.sitename/')define('ROOT', 'http://localhost/testsite/')

答案 1 :(得分:0)

CodeIgniter使用

,config.php文件中有一个配置变量:

$config["base_path"] = "/projects/mysite/"; //relative to http://localhost

并且有一个辅助函数:

function base_url(){
     return $config["base_path"];
}

并在您的网址中使用它

如果你使用smarty:

<img src="{base_url()}assets/images/1.jpg">

或直接php:

<img src="<?php echo base_url();?>assets/images/1.jpg">

当您将网站上传到网络时,只需将基本网址更改为:

$config["base_path"] = "/";

再次全部工作。

答案 2 :(得分:0)

根据您在我的其他答案中的评论,您可以这样做:

您可以创建一个简单的安装页面,并询问用户他们计划托管您的网络应用的网址。

然后你可以在数据库或其他东西中设置这个变量。

许多网络应用程序都这样做:Wordpress,Joomla浮现在脑海中。

编辑:

您还可以尝试使用php $ _SERVER变量构建网址。您可以获取主机端口来构建URL。

不幸的是,如果某人决定将您的网络应用程序托管在子域名域的根目录之外,则可能会出现问题。

像'http:// domain / yourwebapphere /'

之类的东西

如果没有用户指定,您将无法检测到它。如果您使用单个端点并使用htaccess重定向网址,则仍需要在htacess中指定一个基本网址,以便正确重定向。

EDIT2:

好的,如果你真的想动态创建url,这里有一些关于如何做的psuedo代码。

$protocol = parse_server_protocol($_SERVER['server_protocol']);
$port = $_SERVER['port']
$host = $_SERVER['server_name'];
//For use case where the app is not hosted at root of domain ("http://domain.com/test") for example
$urlroot = parse_root($_SERVER["REQUEST_URI"]);

$siteurl = buildRootUrl($protocol, $port, $host, $urlRoot);

//Now save that root url in the database.

如果您使用htacess创建干净的网址,您的应用程序需要知道如何在不在域根目录下托管的实例中编写baseurl。