代码实现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网址...

  1. <?php
  2. // echo $_SERVER['SERVER_NAME'];
  3. echo $_SERVER['HTTP_HOST'].'<br/>';
  4. function Path2webURL($path) // Absolute File path or Directory path to WebURL
  5. {
  6. $wwwDir='C:/AppServ/www';
  7. $path=str_replace(DIRECTORY_SEPARATOR, '/', $path); // 将DIRECTORY_SEPARATOR都替换为/,便于统一处理
  8. $ServerDomain=$_SERVER['HTTP_HOST']; // with port
  9. $webURL='http://'.str_ireplace($wwwDir, $ServerDomain, $path);
  10. return $webURL;
  11. }
  12. $test1='C:/AppServ/www/ccc';
  13. $test2=__FILE__; // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
  14. echo $test2.'<br/>+++++<br/>';
  15. $test3=dirname(__FILE__); // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
  16. echo $test3.'<br/>+++++<br/>';
  17. echo Path2webURL($test1).'<br/>------<br/>';
  18. echo Path2webURL($test2).'<br/>------<br/>';
  19. echo Path2webURL($test3).'<br/>------<br/>';
  20. ?>

代码1中需要根据具体的操作系统去手动调整Windows或Linux下的目录(即:变量$wwwDir),改进一下,可以写出代码2,对Windows或Linux都通用...

代码2:

  1. <?php
  2. // echo $_SERVER['SERVER_NAME'];
  3. echo $_SERVER['HTTP_HOST'].'<br/>';
  4. function Path2webURL($path) // Absolute File path or Directory path to WebURL
  5. {
  6. $wwwDir=array('C:/AppServ/www','/var/www'); // 分别设置Windows和Linux下www文件夹所在路径
  7. $path=str_replace(DIRECTORY_SEPARATOR, '/', $path); // 将DIRECTORY_SEPARATOR都替换为/,便于统一处理
  8. $ServerDomain=$_SERVER['HTTP_HOST']; // with port
  9. $webURL='http://'.str_ireplace($wwwDir, array($ServerDomain, $ServerDomain), $path);
  10. return $webURL;
  11. }
  12. $test1='C:/AppServ/www/ccc';
  13. $test2=__FILE__; // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
  14. echo $test2.'<br/>+++++<br/>';
  15. $test3=dirname(__FILE__); // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
  16. echo $test3.'<br/>+++++<br/>';
  17. $test4='/var/www/ddd';
  18. echo Path2webURL($test1).'<br/>------<br/>';
  19. echo Path2webURL($test2).'<br/>------<br/>';
  20. echo Path2webURL($test3).'<br/>------<br/>';
  21. echo Path2webURL($test4).'<br/>------<br/>';
  22. ?>

代码实现PHP web服务器下绝对路径到Web网址的转换的更多相关文章

  1. 无法在web服务器下启动调试

    VS2013 编译时异常 无法在web服务器下启动调试.该Web服务器未及时响应   VS2013 编译时错误 无法在web服务器上启动调试.该Web服务器未及时响应.无法在web服务器上启动调试.该 ...

  2. XAMPP环境访问非Web DocumentRoot下绝对路径

    假设你的XAMPP网站文档根目录在C:/xampp/apache/htdocs/下面,那么访问这个目录下的文件是很直接的. 但是有时候需要把用户上传文件指定到特殊目录,比如E盘,那么就需要用户能够访问 ...

  3. 无法在web服务器下启动调试。该Web服务器未及时响应

    下午在运行项目的时候,突然出现了以下错误: 无法在web服务器上启动调试.该Web服务器未及时响应.可能是因为另一个调试器已连接到该Web服务器. 搜索了很久才找到这个解决方案: 1:Web.conf ...

  4. WEB服务器4--IIS中网站、Web应用程序和虚拟目录

    网站.Web应用程序和虚拟目录 在IIS中可以创建网站.Web 应用程序和虚拟目录,以便与计算机网络上的用户共享信息. “网站”.“Web 应用程序”和“虚拟目录”这三个概念的关系如图 8‑1所示. ...

  5. 启动调试IIS时,vs无法在 Web 服务器上启动调试。Web 服务器未能找到请求的资源。 有关详细信息,请单击“帮助”。

    问题截图 1.检查 是否设置了本地IIS 2.检查IIS端口是否为80 3.默认网站设置是否正确 可参考,查看网站绑定是否正确

  6. 基于TcpListerer的web服务器 和 基于HttpListerer的web服务器

    摘自<Asp.Net 本质论>作者:郝冠军 /* 为了简化基于TCP协议的监听程序,.NET在System.Net.Sockets命名空间中提供了TcpListerer类,使用它,在构造函 ...

  7. CentOS 6.2下搭建Web服务器

    1Centos 6.2下搭建web服务器 如今,Linux在Web应用越来越广,许多企业都采用Linux来搭建Web服务器,这样即节省了购买正版软件的费用,而且还能够提高服务器的安全性. 之前我们介绍 ...

  8. HttpServer:一款Windows平台下基于IOCP模型的高并发轻量级web服务器

    HttpServer的特点1.完全采用IOCP模型,实现真正的异步IO,高并发.高可靠: 2.支持4G以上文件下载: 3.支持断点续传: 4.轻量级,体积小,服务器文件仅200多K,无任何依赖库: 5 ...

  9. 关于Web服务器的认识

    马上就要毕业了,也要开始找工作了,大学写了这么多代码了,却没有好好总结一下常用的概念很是遗憾额,就通过这篇博客记录一下我最常用的一些知识好了. 说到Web服务器,有很多文章都介绍的很好,之前看到一篇非 ...

随机推荐

  1. vscode设置中文语言

    https://jingyan.baidu.com/article/7e44095377c9d12fc1e2ef5b.html

  2. 配置maven和maven本地仓库

    l配置maven: 下载maven 网站: http://maven.apache.org/download.cgi 下载解压,在配置maven 右键本地电脑   选择 属性  在选择高级环境变量在选 ...

  3. 全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx

    可道云真的很强大,安装包很小,功能却很齐全,还可以自定义轻应用如果有手机客户端就更好了 研究了一下,可道云根目录放到外置存储设备(移动硬盘)会更合适,改路径的方法下面有提到上传文件时一个文件会在用户目 ...

  4. Android Studio的构建系统:Gradle

    原文作者:youxiachai <用Gradle 构建你的android程序> 前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android st ...

  5. PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)

    Hello!今天我们来学习一下这个神奇的图片处理的第三方函数库——PIL库 (本blog部分图片及代码来自网络) 这是一个支持图像存储.显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的 ...

  6. Nginx如何进行配置优化?

    在日常工作的时候,搭建配置Nginx的时候,我们都会做相应的优化,那一般需要做的配置优化有哪些呢?可能有些小伙伴一听到要进行优化,内心难免有些慌. 今天咱们聊聊Nginx进行常规配置优化,这里需要注意 ...

  7. AtiveMQ初次连接的 http error:503 连接错误 Prolem accessing /.Reason : Service Unavailable

    503错误 说明是服务器内部的错误了 这是 为什么嫩  这是因为你的Linux虚拟机(我用的是centos版本的)的机器名 和 你的 ip地址的映射关系 不一致  导致访问失败 查看机器名的地址:ca ...

  8. No Spring WebApplicationInitializer types detected on classpath 问题的一种解决办法

    今天在idea中编译部署工程,tomcat报了这个错误: No Spring WebApplicationInitializer types detected on classpath 导致前端页面访 ...

  9. 网页开发--03(wampserver安装服务无法启动的问题)

    一.安装wampserver 一路next,指定安装路径外,其它默认安装. 二.我遇到的问题 当任务图标绿色为正常启动状态,但是我的从打开一直是黄色,问题在于Apache和MySql 1)Apache ...

  10. 干货分享: 长达150页的openvswitch的ppt,不实验无真相

    下载链接: Openvswitch实验教程 http://files.cnblogs.com/popsuper1982/Openvswtich.pptx 一.概论 Software Defined N ...