getcwd() 和 dirname(__FILE__) 之间的区别?我应该使用哪个?

2023-12-28

在 PHP 中,有什么区别

getcwd()
dirname(__FILE__)

当我从 CLI 回显时,它们都返回相同的结果

echo getcwd()."\n";
echo dirname(__FILE__)."\n";

Returns:

/home/user/Desktop/testing/
/home/user/Desktop/testing/

哪一个最好用?有关系吗?更高级的 PHP 开发人员更喜欢什么?


__FILE__ is a 魔法常数 http://php.net/manual/en/language.constants.predefined.php包含您正在执行的文件的完整路径。如果您位于包含文件内,则其路径将是以下内容__FILE__.

所以通过这个设置:

/文件夹/随机/foo.php

<?php
echo getcwd() . "\n";
echo dirname(__FILE__) . "\n" ;
echo "-------\n";
include 'bar/bar.php';

/folder/random/bar/bar.php

<?php
echo getcwd() . "\n";
echo dirname(__FILE__) . "\n";

你得到这个输出:

/folder/random
/folder/random
-------
/folder/random
/folder/random/bar

So getcwd()返回您开始执行的目录,同时dirname(__FILE__)是文件相关的。

在我的网络服务器上,getcwd()返回最初开始执行的文件的位置。使用 CLI 它等于执行后得到的结果pwd。这是由CLI SAPI 文档 https://secure.php.net/manual/en/features.commandline.differences.php以及评论getcwd手册页:

CLI SAPI 与其他 SAPI 不同,不会自动将当前工作目录更改为启动脚本所在的目录。

所以就像:

thom@griffin /home/thom $ echo "<?php echo getcwd() . '\n' ?>" >> test.php
thom@griffin /home/thom $ php test.php 
/home/thom
thom@griffin /home/thom $ cd ..
thom@griffin /home $ php thom/test.php 
/home

当然,另请参阅手册:http://php.net/manual/en/function.getcwd.php http://php.net/manual/en/function.getcwd.php

UPDATE:从 PHP 5.3.0 开始你还可以使用魔法常量__DIR__这相当于dirname(__FILE__).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

getcwd() 和 dirname(__FILE__) 之间的区别?我应该使用哪个? 的相关文章

  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input
  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • BS4:区分大小写的搜索

    是否可以只找到那些大写格式的标签 我有一个 html 页面 有标签a href gt 和标签 a href 我只想获取标签 a href format 当我尝试all index findAll A 它什么也不返回 万一我尝试all ind
  • 从另一个页面打开 Bootstrap 3 手风琴面板

    这是我的手风琴代码 div class panel group div class panel panel default div class panel heading h4 class panel title a href collap
  • 即使更新实际发生,mysql_affected_rows() 也会为 UPDATE 语句返回 0

    我正在尝试获取简单 mysql 更新查询中受影响的行数 但是 当我运行下面的代码时 PHP 的 mysql affected rows 始终等于 0 无论 foo 1 是否已经存在 在这种情况下 该函数应该正确地返回 0 因为没有行被更改
  • 使用 jQuery 动态添加行

    我正在构建一个需要多个可选输入的表单 我所拥有的基本上是这样的 每次用户按下加号按钮时 都会将新的一行表单输入添加到表单中 我该如何在 jQuery 中执行此操作 另外 当所有行都自动添加新行时 是否可以自动添加新行 或者只是最后一行 如果
  • win32 上的 python:如何获取绝对计时/CPU 周期计数

    我有一个 python 脚本 它调用基于 USB 的数据采集 C dotnet 可执行文件 主要的 python 脚本还执行许多其他操作 例如它控制步进电机 我们想要检查各种操作的相对时间 为此目的 dotnet exe 会从 C Stop
  • asp.net - 如何在 ListItem 文本属性中呈现 html 标签?

    我有一个通过服务器端填充的 DropDownList 控件 我使用 For Each datarow 循环并创建一个新的 ListItem 在 DataRow 中有一个 ID 为 Title 的列 该字段可以包含 或 标签 例如 父标题 中
  • 无法将磁盘添加到 Google VM 实例

    我无法向谷歌云虚拟机实例添加额外的磁盘 有限制吗 配额没问题 我已经添加了 6 个磁盘 第七有问题 我尝试了多个实例和多个磁盘 我收到错误 Editing VM instance X failed Error Invalid resourc
  • 如何保护使用 javax.scripting 运行的脚本?

    我在用javax scripting添加对在服务器端运行任意用户上传的 JavaScript 的支持 显然我想保护这些脚本 Rhino 本身有一个用于在运行时保护脚本的框架 的文档javax scripting但是 没有提及脚本可用的安全性
  • 解析二进制文件。什么是现代方式?

    我有一个二进制文件 其中有一些我知道的布局 例如让格式如下 2 个字节 无符号短整型 字符串的长度 5 个字节 5 个字符 字符串 一些 id 名称 4 个字节 无符号整数 一个跨步 24 字节 6 x 浮点 2 个步幅 每个步幅 3 个浮
  • 自动在后台启动应用程序?

    有没有办法让 iOS 应用程序保留在后台 以便它在设备打开时自动启动 并且在终止后会在稍后重新启动 我读过一些关于 VoIP 和 GPS 服务的帖子 我的应用程序发送带有用户位置的紧急短信 它需要保持活跃以监听遇险触发因素 是否可以通过使用
  • Mysql 从日期范围列表中生成每个日期

    我有一个查询 select from bla bla 它产生如下所示的日期范围结果 code date1 date2 a 2016 04 19 2016 04 21 b 2016 04 13 2016 04 14 我想生成 date1 和
  • 如何比较 Go 错误

    我有一个错误值 当在控制台上打印时给我Token is expired 如何将其与特定误差值进行比较 我尝试了这个但没有成功 if err errors New Token is expired log Printf Unauthorise
  • 在 C++ 中区分 typedef 和相同类型

    我想要类似于下面的功能 typedef int A typedef int B struct foo foo A a specific to type A foo B b specific to type B 我在程序中使用 typedef
  • UNION 多个存储过程的结果

    我有一个存储过程 我需要调用几次不同的时间 每次传递不同的参数 我想将结果收集为单个数据集 这样的事情可能吗 exec MyStoredProcedure 1 UNION exec MyStoredProcedure 2 UNION exe
  • 将事件处理程序添加到 iframe 以在 keyup 上调用

    在网页上我有 iframe 在其中显示一些内容 如果在 iframe 内按下任何键 iframe 是可编辑的 我想运行一个函数 我可以使用ajax 页面上有scriptmanager 来做到这一点 Sys UI DomEvent addHa
  • Ember.js - 如何使用 DS.store.findRecord() 方法处理错误

    我正在使用以下简单代码来检索用户 来自服务器 var someUser this store findRecord user 0 我用它来检索用户 如果在 0 id 上找不到用户 服务器返回 404 并根据 json api 出现错误 但我
  • 如何在R-studio中的函数体中设置断点?

    我有一个 R 脚本 它调用我编写的函数 但是 当我执行脚本时 程序不会停止在函数体中的调试点处 调试点唯一起作用的时间是在主脚本文件中设置它们时 我正在使用 R studio IDE 但是任何通用的解决方案也将受到赞赏 如果您处理多个文件
  • 获取 ORACLE 编程对象定义

    假设我有一个 ORACLE 模式 其中包含一个包 该包定义了类型 函数 过程等 CREATE PACKAGE DECLARE FUNCTION PROCEDURE END 是否可以执行查询来获取这些单独对象的定义 而无需包装包 如果您需要该
  • perl - 如何创建一个包含 n 个空字符串或零的数组?

    当我在 Perl 中操作 CSV 文件时 我经常需要用一些相同元素初始化一个数组 my arr for my i 0 n 1 push arr 有没有办法以更紧凑的形式做到这一点 完美的是 我希望有一个用于此目的的表达式 以便我可以轻松添加
  • getcwd() 和 dirname(__FILE__) 之间的区别?我应该使用哪个?

    在 PHP 中 有什么区别 getcwd dirname FILE 当我从 CLI 回显时 它们都返回相同的结果 echo getcwd n echo dirname FILE n Returns home user Desktop tes