【TP5源码】获取项目的根目录
实现代码
<?php
namespace app\index\controller;class Index
{# 获取应用根目录public function index(){# 这里是判断命令行执行,还是浏览器执行if ('cli' == PHP_SAPI) {$scriptName = realpath($_SERVER['argv'][0]);} else {# 获取文件的绝对路径$scriptName = $_SERVER['SCRIPT_FILENAME'];}# dirname是获取目录,reapath返回绝对路径$path = realpath(dirname($scriptName));# 检测是不是文件if (!is_file($path . DIRECTORY_SEPARATOR . 'think')) {$path = dirname($path);}return $path . DIRECTORY_SEPARATOR;}
}
步骤详解
(1)分析 if ('cli' == PHP_SAPI) {
先来看这一行代码,这里有个常量是PHP_SAPI,然后进行打印出来是cgi-fcgi,所以会走else
这里会有三种情况:
nginx访问是fast-cgi
apache访问是apache2handler
命令行访问是cli
(2)执行$scriptName = $_SERVER['SCRIPT_FILENAME'];
$_SERVER['SCRIPT_FILENAME']是访问的是哪个文件,它就获取这个文件的绝对路径
打印出来的是:
C:/phpStudy/PHPTutorial/WWW/tp5.1learn/public/index.php
(3)执行$path = realpath(dirname($scriptName));
这行进行了两个操作:
dirname()函数返回路径中的目录部分。
realpath() 函数返回绝对路径。
打印结果:
dirname($scriptName):C:/phpStudy/PHPTutorial/WWW/tp5.1learn/public
realpath(dirname($scriptName)):C:\phpStudy\PHPTutorial\WWW\tp5.1learn\public
(4)执行is_file($path . DIRECTORY_SEPARATOR . 'think',
打印结果:C:\phpStudy\PHPTutorial\WWW\tp5.1learn\public\think
这一步不会执行,因为在public的目录下没有think这个目录
这里需要注意一个点就是define ('DIRECTORY_SEPARATOR', "/"),在PHP这个是定义斜杠的常量
(5)执行$path . DIRECTORY_SEPARATOR;
执行结果:C:\phpStudy\PHPTutorial\WWW\tp5.1learn\
(6)完结:这个也就是tp5.1获取项目根目录的一个完整过程
【TP5源码】获取项目的根目录相关推荐
- 【甄选靶场】Vulnhub百个项目渗透——项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取)
Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取) 靶场地址
- <漫漫Android路>AOSP源码获取编译及问题处理
漫漫Android路---1.AOSP源码获取编译及导入 写在前面 环境准备 AOSP源码获取 1.Repo下载配置 2.Git安装及配置 3.AOSP获取 AOSP源码编译 1.安装编译依赖 2.开 ...
- 华为云14天鸿蒙设备开发-Day1源码获取
目录 前言 一.获取源码 1.源码获取方式 1.1 从镜像站点获取 1.2 从HPM网站组件式获取 1.3 用包管理器命令行获取 1.4从代码仓库获取 二.在Windows中打开工程源码 1.映射工程 ...
- Django基于用户画像的电影推荐系统源码(项目源代码)
一.项目介绍 公众号:yk 坤帝 获取全部源代码 本系统是以Django作为基础框架,采用MTV模式,数据库使用MongoDB.MySQL和Redis,以从豆瓣平台爬取的电影数据作为基础数据源,主要基 ...
- php5.5n的redis,TP5源码 Redis操作便捷类库
# TP5源码 Redis操作便捷类库 > app\base\controller\Redis ~~~ /** * Created by PhpStorm. * Power by Mikkle ...
- 鸿蒙Hi3861学习十九-DevEco Device Tool源码获取、编译、下载
一.简介 在上一篇文章中,已经讲述了如何在Windows通过Remote SSH远程连接Linux下的DevEco Device Tool.这篇文章,来说一下关于源码的获取.编译与下载.建议先按照上一 ...
- 教务管理系统(免费源码获取)
项目介绍 本系统使用springboot,mybatis-plus,shiro,lombok等技术,使用json传递数据 使用加盐加密对数据进行保存,前端页面使用vue搭建并打包放在static文件夹 ...
- 【MATLAB第9期】基于MATLAB的xgboost算法安装超详细教学(踩坑避雷指南)暂时仅限于Windows系统 #末尾含源码获取链接
1.前言 网上基于MATLAB的xgboost源码资源太少了,而且找到的工具箱还不能立马用,对新手不太友好,接下来我将研究捣鼓半天的成果和经验分享给大家. 2.安装具备条件 1.有matlab软件,版 ...
- 网站源码下载项目,小白简单搬运月入1w+
大家好,我是小程序发课共享资料库. 有个粉丝问我,我的小程序的后台的网站怎么搭建的,看着网站美化做的不错,问我怎么设计的?还问我是不是设计出身? 我说我不会设计网站,无非用的wp主题,现成的源码. 认 ...
- 基于springboot+bootstrap+thymeleaf的物联网一站式宠物管理平台(领养、救助、商城)设计 毕业论文+用户手册+源码清单+项目源码及数据库文件
下载:https://download.csdn.net/download/m0_66682818/77957797 项目介绍: 基于springboot+bootstrap+thymeleaf的物联 ...
最新文章
- iOS下的类似Android的toast提示
- Delphi-网络编程-UDP聊天程序(转)
- java返回json ajax_Spring MVC 中 AJAX请求并返回JSON的示例
- JVM基于栈的解释器执行原理
- 使用PowerDbg自动化Windbg调试过程
- FFMPEG结构体分析之AVCodec
- mongodb数据库中插入数据
- beta:scrum5
- static关键字 void和void指针 函数指针
- CSS3实现圆角效果
- mysql编译gcov_Mysql 编译参数详解
- 大数据BI可视化软件在企业的应用
- Android实战开发小米主题下载工具
- C语言bmp转JPEG不用库函数,C++图片格式转换:BMP转JPEG
- 【2021 ICPC Gran Premio de Mexico 2da Fecha F】Flipped Factorization 题解
- 【论】Strategic sourcing selection for bike-sharing rebalancing: An evolutionary game approach
- 十年磨一剑,剑出荡魑魅
- 23种设计模式分析(4):结构型模式
- Visual Studio2019下载安装
- 互联网金融产品实战——安全开发篇
热门文章
- N²logN和NlogN​​²具有相同的增长速度
- Arcgis engine 10.2 面积分割 比例分割 等份分割
- [渝粤教育] 中南财经政法大学 生活中的管理会计 参考 资料
- Android播放器的三种实现方法
- ESXI6.7 windows虚拟机 取消Vmware Tools分辨率自适应/固定分辨率
- SDN(Software Defined Network):软件定义网络
- windows10隐藏分区(隐藏efi系统分区)
- 腾讯云linux装mysql_Linux腾讯云下安装mysql
- Echarts数据可视化2
- java毕业设计大学生互动交流论坛Mybatis+系统+数据库+调试部署