相对路径在PHP中没有按预期工作?

时间:2013-10-15 19:04:06

标签: php path

我正在使用Code Canyon上的一个名为XCRUD的脚本。顾名思义它创建了CRUD表单。但是当服务器发生变化(即本地开发到生产)时,我无法使其工作。

它的配置包括在配置类中设置一堆属性。一个特别是文件路径:

public static $scripts_url = 'xcrud'; 
// URL to the xCRUD folder, not real path, without a trailing slash, can be relative, 
e.g. 'some_folder/xcrud' or absolute, e.g. 'http://www.your_site.com/some_folder/xcrud'

我遇到的问题是我似乎无法找到一种方法来输入实际在多个服务器位置工作的相对路径。

例如,假设我有以下3个环境要处理:

  1. 本地发展:http://localhost:8888/site/

  2. 生产测试:http://urltest.com/dept/site/

  3. 现场直播:http://url.com/dept/site/

  4. 如果我将xcrud路径设置为site/xcrud,则它适用于1,但不适用于2或3.所以它不像我认为的相对路径那样。

    我当前的“解决方案”是一个switch语句,它定义了一个基于$_SERVER['SERVER_NAME']的绝对路径的常量,以及我知道这三个环境中的路径,然后使用该常量作为config中的路径。但这不是完全灵活的,似乎是错误的做法:

        switch ($_SERVER['SERVER_NAME']) {
            case "localhost":
               define('MY_SERVER_PATH', 'http://localhost:8888/site/xcrud');
               break;
            case "urltest.com":
               define('MY_SERVER_PATH', 'http://urltest.com/dept/site/xcrud');
               break;
            case "url.com":
               define('MY_SERVER_PATH', 'http://url.com/dept/site/xcrud');
               break;
        }
    
        public static $scripts_url = MY_SERVER_PATH; 
    

    必须有更好的方法,对吧?

2 个答案:

答案 0 :(得分:0)

您可以使用一些配置文件,因为您使用的是多个环境。这样就可以为每个产品加载不同的值(例如数据库凭证或您的crud URL)。

使用配置结构,您只需在应用程序开头的某个位置检查环境。

switch ($_SERVER['SERVER_NAME']) {
    case "localhost":
        // Load localhost config file
       break;
    case "urltest.com":
       // Load urltest config file
       break;
}

答案 1 :(得分:0)

尝试v1.6。它有url路径自动检测,只需将$scripts_url留空:)