代码实现PHP web服务器下绝对路径到Web网址的转换
代码实现PHP web服务器下绝对路径到Web网址的转换
代码中用到几个系统变量或常量:
1. 路径中各目录分隔字符 DIRECTORY_SEPARATOR(常量),Windows下DIRECTORY_SEPARATOR是\\,Linux下是/ 。
2. 变量$_SERVER['HTTP_HOST']可以返回Web服务器带端口的主机地址(比如 localhost:8080),$_SERVER['SERVER_NAME']可返回不带端口的主机地址。
3. 常量__FILE__返回当前文件的绝对地址,而dirname(__FILE__)返回当前文件所在目录的绝对地址...
另外,提一下变量$_SERVER['PHP_SELF']
该变量返回当前执行脚本的文件名,与document root有关。例如,在地址为http://example.com/test.php/foo.bar 的脚本中使用$_SERVER['PHP_SELF'] 将得到 /test.php/foo.bar
代码1:
文件名: path_test.php
实现将web服务器下绝对路径(文件路径或目录的路径皆可)转换为Web网址...
<?php
// echo $_SERVER['SERVER_NAME'];
echo $_SERVER['HTTP_HOST'].'<br/>';
function Path2webURL($path) // Absolute File path or Directory path to WebURL
{
$wwwDir='C:/AppServ/www';
$path=str_replace(DIRECTORY_SEPARATOR, '/', $path); // 将DIRECTORY_SEPARATOR都替换为/,便于统一处理
$ServerDomain=$_SERVER['HTTP_HOST']; // with port
$webURL='http://'.str_ireplace($wwwDir, $ServerDomain, $path);
return $webURL;
}
$test1='C:/AppServ/www/ccc';
$test2=__FILE__; // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
echo $test2.'<br/>+++++<br/>';
$test3=dirname(__FILE__); // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
echo $test3.'<br/>+++++<br/>';
echo Path2webURL($test1).'<br/>------<br/>';
echo Path2webURL($test2).'<br/>------<br/>';
echo Path2webURL($test3).'<br/>------<br/>';
?>
代码1中需要根据具体的操作系统去手动调整Windows或Linux下的目录(即:变量$wwwDir),改进一下,可以写出代码2,对Windows或Linux都通用...
代码2:
<?php
// echo $_SERVER['SERVER_NAME'];
echo $_SERVER['HTTP_HOST'].'<br/>';
function Path2webURL($path) // Absolute File path or Directory path to WebURL
{
$wwwDir=array('C:/AppServ/www','/var/www'); // 分别设置Windows和Linux下www文件夹所在路径
$path=str_replace(DIRECTORY_SEPARATOR, '/', $path); // 将DIRECTORY_SEPARATOR都替换为/,便于统一处理
$ServerDomain=$_SERVER['HTTP_HOST']; // with port
$webURL='http://'.str_ireplace($wwwDir, array($ServerDomain, $ServerDomain), $path);
return $webURL;
}
$test1='C:/AppServ/www/ccc';
$test2=__FILE__; // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
echo $test2.'<br/>+++++<br/>';
$test3=dirname(__FILE__); // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
echo $test3.'<br/>+++++<br/>';
$test4='/var/www/ddd';
echo Path2webURL($test1).'<br/>------<br/>';
echo Path2webURL($test2).'<br/>------<br/>';
echo Path2webURL($test3).'<br/>------<br/>';
echo Path2webURL($test4).'<br/>------<br/>';
?>
代码实现PHP web服务器下绝对路径到Web网址的转换的更多相关文章
- 无法在web服务器下启动调试
VS2013 编译时异常 无法在web服务器下启动调试.该Web服务器未及时响应 VS2013 编译时错误 无法在web服务器上启动调试.该Web服务器未及时响应.无法在web服务器上启动调试.该 ...
- XAMPP环境访问非Web DocumentRoot下绝对路径
假设你的XAMPP网站文档根目录在C:/xampp/apache/htdocs/下面,那么访问这个目录下的文件是很直接的. 但是有时候需要把用户上传文件指定到特殊目录,比如E盘,那么就需要用户能够访问 ...
- 无法在web服务器下启动调试。该Web服务器未及时响应
下午在运行项目的时候,突然出现了以下错误: 无法在web服务器上启动调试.该Web服务器未及时响应.可能是因为另一个调试器已连接到该Web服务器. 搜索了很久才找到这个解决方案: 1:Web.conf ...
- WEB服务器4--IIS中网站、Web应用程序和虚拟目录
网站.Web应用程序和虚拟目录 在IIS中可以创建网站.Web 应用程序和虚拟目录,以便与计算机网络上的用户共享信息. “网站”.“Web 应用程序”和“虚拟目录”这三个概念的关系如图 8‑1所示. ...
- 启动调试IIS时,vs无法在 Web 服务器上启动调试。Web 服务器未能找到请求的资源。 有关详细信息,请单击“帮助”。
问题截图 1.检查 是否设置了本地IIS 2.检查IIS端口是否为80 3.默认网站设置是否正确 可参考,查看网站绑定是否正确
- 基于TcpListerer的web服务器 和 基于HttpListerer的web服务器
摘自<Asp.Net 本质论>作者:郝冠军 /* 为了简化基于TCP协议的监听程序,.NET在System.Net.Sockets命名空间中提供了TcpListerer类,使用它,在构造函 ...
- CentOS 6.2下搭建Web服务器
1Centos 6.2下搭建web服务器 如今,Linux在Web应用越来越广,许多企业都采用Linux来搭建Web服务器,这样即节省了购买正版软件的费用,而且还能够提高服务器的安全性. 之前我们介绍 ...
- HttpServer:一款Windows平台下基于IOCP模型的高并发轻量级web服务器
HttpServer的特点1.完全采用IOCP模型,实现真正的异步IO,高并发.高可靠: 2.支持4G以上文件下载: 3.支持断点续传: 4.轻量级,体积小,服务器文件仅200多K,无任何依赖库: 5 ...
- 关于Web服务器的认识
马上就要毕业了,也要开始找工作了,大学写了这么多代码了,却没有好好总结一下常用的概念很是遗憾额,就通过这篇博客记录一下我最常用的一些知识好了. 说到Web服务器,有很多文章都介绍的很好,之前看到一篇非 ...
随机推荐
- VMware14 安装CentOS7 实现宿主机ping通虚拟机、虚拟机ping通宿主机、虚拟机能上网且能ping通百度
本文旨在通过通过虚拟机VMware14来安装CentOS7 系统,并配置固定IP来实现在Windows系统中使用Linux环境. 本文目录: 0.本机环境 1.VMware14 初始化 1.1.安装V ...
- django -使用jinja2模板引擎 自定义的过滤器
setting.py中 TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', 'DIRS': [os.path.jo ...
- python学习笔记(7)
第七章 文件和数据格式化 文件的使用 文件是数据的抽象和集合 文件是存储在辅助存储器上的数据序列 文件是数据存储的一种形式 文件展现形态:文本文件和二进制文件 文本文件 由单一特定编码组成的文件,如U ...
- svn idea 修改文件,文件不变色
删除后,重新添加. 我这里是什么也没有选择,选上Subversion后,保存,再修改文件,文件颜色就变了 Settings-->Version Control
- Tips_钉钉免登前端实现
1.需求:开发钉钉微应用,需要实现钉钉的免登陆功能. #.其实钉钉的文档中心还是很详细的,只是刚开始接触会一头雾水,所以花费了挺多时间....... ?什么是钉钉免登功能. ?企业应用免登开发授权流程 ...
- 我和python的初相识
认识Python是大二的选修 单纯只是想赚学分而已 后来觉得越来越有趣. 一.python简介 简单来说Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设 ...
- django介绍及路由系统
第一:Python的web框架介绍 Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引 ...
- 巧用PHP中__get()魔术方法
PHP中的魔术方法有很多,这些魔术方法可以让PHP脚本在某些特定的情况下自动调用.比如 __construct() 每次实例化一个类都会先调用该方法进行初始化.这里我们讲一下__get() 魔术方法的 ...
- Linux的小知识点
uname 2.whereis 3.df 4.which 5.apt和dpkg 6.service 7./etc/init.d/ 8.netstat -anptu 查看端口占用 9.netstat 1 ...
- c++ 读取不了hdf5文件中的字符串
问题描述: 在拿到一个hdf5文件,想用c++去读取文件中的字符串,但是会报错:read failed ps: c++读取hdf5的字符串方法见:https://support.hdfgroup.or ...