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']