Php 定义本地和活动环境路径

Php 定义本地和活动环境路径,php,Php,我正在使用表单将文件上载到特定的上载文件夹。 现在,在我的本地开发环境中,本地文件夹被编码在如下的变量中 $destination = 'c:/public_html/discography/artwork/'; 一旦脚本完成并准备在实时环境中移动,上载文件夹将被删除 $destination = '/home/my_name/public_html/discography/artwork/'; 我的问题如下: 现在,这两个变量都是硬编码的。如何根据环境选择正确的路径 如果可能,我希望它位于

我正在使用表单将文件上载到特定的上载文件夹。 现在,在我的本地开发环境中,本地文件夹被编码在如下的变量中

$destination = 'c:/public_html/discography/artwork/';
一旦脚本完成并准备在实时环境中移动,上载文件夹将被删除

$destination = '/home/my_name/public_html/discography/artwork/';
我的问题如下: 现在,这两个变量都是硬编码的。如何根据环境选择正确的路径

如果可能,我希望它位于define语句中,以便我可以在脚本中的任何位置使用它:

define('UPLOAD_ARTWORK', ????);
本地:

$destination = 'c:/public_html/discography/artwork/';
$move = move_uploaded_file($_FILES['artwork']['tmp_name'], $destination.$_FILES['artwork']['name']);
现场:

$destination = '/home/my_name/public_html/discography/artwork/';
$move = move_uploaded_file($_FILES['artwork']['tmp_name'], $destination.$_FILES['artwork']['name']);
希望

define('UPLOAD_ARTWORK', ????);
$move = move_uploaded_file($_FILES['artwork']['tmp_name'], UPLOAD_ARTWORK.$_FILES['artwork']['name']);
谢谢

为什么不做这样的测试呢

0 == strcmp('127.0.0.1', $_SERVER['SERVER_ADDR'])

类似的操作将根据您的vhosts设置方式而定:

switch($_SERVER['HTTP_HOST'])
{
    case 'dev.mysite.com':
    case 'localhost':
        define('UPLOAD_ARTWORK','c:/public_html/discography/artwork/');
        break;
    case 'www.mysite.com':
        define('UPLOAD_ARTWORK','/home/my_name/public_html/discography/artwork/');
        break;
}

你的选择是正确的。您所需要的只是确定脚本是在本地运行还是在实时服务器上运行。如果您使用的是dev.example.com或ip地址ala 127.0.0.1,那么这可能是一个子域。然后你可以这样写

switch($_SERVER['HTTP_HOST']){
    case "dev.example.com":
        define('UPLOAD_ARTWORK','c:/public_html/discography/artwork/');
        break;
    default:
        define('UPLOAD_ARTWORK','/home/my_name/public_html/discography/artwork/');
}
$move = move_uploaded_file($_FILES['artwork']['tmp_name'], UPLOAD_ARTWORK.$_FILES['artwork']['name']);

如果不想依赖主机名,也可以使用环境变量

使用Apache Web服务器,您甚至可以在
.htaccess
()内部使用它来添加配置设置,如上载路径(您也可以在其中使用许多条件,如基于IP地址、cookie、主机名等设置环境)

在PHP中,只需使用超全局
$\u ENV
获取值

$_ENV['upload_path']

+这实际上是个好主意。我从未想过使用本地子域,例如
dev.
谢谢你的想法!
$_ENV['upload_path']