【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的物联 ...
最新文章
- CVPR 2021 Oral | 室内动态场景中的相机重定位
- 网页加载出现没有合适的负载均衡器_gRPC实战--Kubernetes中使用envoy负载均衡gRPC流量...
- day002--python编程的相关软件,变量
- hdu 2871 Memory Control(线段树)
- 浅谈数据结构之主席树(线段树进阶版)
- 离散数学期末复习概念_复习第1部分中的基本概念
- php pathinfo 解析,php 解析pathinfo 类
- 一起talk C栗子吧(第三十九回:C语言实例--创建一棵二叉树)
- 【读书笔记->统计学】05-02 “概率”的整体影响-随机变量的线性变换、独立观测值概念简介
- python运行出玫瑰花的代码_一支玫瑰 - python代码库 - 云代码
- 231个web前端常用的javascript特效分享
- http接口公网对接时用到的RSA加密/解密实现示例
- TypeScript基础入门之Symbols
- JQuery——横纵向菜单设计
- Windows子系统WSL
- 使用Glide模仿微信图片加载策略
- 面向对象程序设计中对抽象的理解
- python爬虫实现豆瓣模拟登录
- window安装Linux
- Python * ** 打包解包 详解
热门文章
- 001 我是天选,也是唯一!
- 大学抢课python脚本_两天时间挑战python实现广州大学抢课?(抢课篇)(第二次修改补充)...
- ACM暑假总结7.17
- 90 后程序员健康现状:掉头发、油腻、腰椎间盘突出……| 程序员有话说
- 百钱买百鸡:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?
- 基于FPGA的CAMERALINK解码(芯片)
- Mac电脑的Spotlight不显示文件和应用程序,怎么办?
- 史上最清晰ufo视频 土耳其新闻
- 【图像分割】基于meanshift实现色盲图像分割含Matlab源码
- PermitRootLogin 问题解决