PHP:可以包含 file_exists() 说不存在的文件

2024-02-09

在我的脚本中,我设置了包含路径(以便应用程序的另一部分也可以包含文件),检查文件是否存在,然后包含它。

但是,在我设置包含路径后,file_exists()报告该文件不存在,但我仍然可以包含相同的文件。

<?php
  $include_path = realpath('path/to/some/directory');
  if(!is_string($include_path) || !is_dir($include_path))
  {
    return false;
  }
  set_include_path(
    implode(PATH_SEPARATOR, array(
      $include_path,
      get_include_path()
    ))
  );
  // Bootstrap file is located at: "path/to/some/directory/bootstrap.php".
  $bootstrap = 'bootstrap.php';

  // Returns "bool(true)".
  var_dump(file_exists($include_path . '/' . $bootstrap));
  // Returns "bool(false)".
  var_dump(file_exists($bootstrap));

  // This led me to believe that the include path was not being set properly.
  // But it is. The next thing is what puzzles me.

  require_once $bootstrap;
  // Not only are there no errors, but the file is included successfully!

我可以编辑包含路径和包含文件而不提供绝对文件路径,但我无法检查它们是否存在。这真的很烦人,因为每次调用不存在的文件时,我的应用程序都会导致致命错误,或者最多会出现警告(使用include_once()).

不幸的是,关闭错误和警告不是一个选择。

谁能解释是什么导致了这种行为?


file_exists只是说明文件是否存在(并且允许脚本知道它存在),解析相对于 cwd 的路径。它不关心包含路径。

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

PHP:可以包含 file_exists() 说不存在的文件 的相关文章

  • PHP strtotime() 未返回正确的月份

    由于当前月份 年份是 2012 年 1 月 为什么以下代码返回 2011 年 12 月而不是 2011 年 11 月 echo date F Y strtotime 2 months 如果有影响的话 这是在 PHP 5 3 0 上 要获得您
  • 从远程托管上的 PHP 获取 PHP 错误日志

    是否有 PHP 函数或其他方式以字符串形式获取 PHP 错误日志 我需要这个 因为我无法访问在其他人的服务器上运行的站点的错误日志 他提出通过电子邮件将错误日志发送给我 但这不太方便 有什么方法可以将错误日志输出到 PHP 页面吗 我意识到
  • 间歇性 PHP 抽象类错误

    我已经为此奋斗了一段时间 但无法弄清楚 也许其他人也有 或者 Slim PHP Apache 等这里有更深层次的问题 在正常工作几个小时后 我的 Slim 安装将开始给出所有路线均如此 致命错误 类 Slim Collection 包含 1
  • laravel cron 使用错误

    Laravel 错误 cron 使用 usr bin php home sitevk artisan 计划 运行 1 gt gt dev null 2 gt 1 应用 控制台 内核 use Illuminate Console Schedu
  • Composer 无法下载文件

    我正在尝试在命令行上使用作曲家 php composer phar update php composer phar install php composer phar self update php composer phar selfu
  • PHP-列出一年中一个月中的所有天[重复]

    这个问题在这里已经有答案了 可能的重复 我在 PHP 中有 2 个日期 如何运行 foreach 循环来遍历所有这些日期 https stackoverflow com questions 3207749 i have 2 dates in
  • C# 获取资源文件夹路径

    我的项目中的一些资源很好 并且使用字符串路径可以正常工作 但是如果我将项目移动到另一个目录或另一台计算机 它将停止工作 请我需要在字符串变量中获取项目资源文件夹的路径 像这样的东西 C Users User1 Documents
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • 使用 php 脚本的电子邮件管道

    你好 我想将所有电子邮件 到达我的收件箱 转发到 php 脚本并检索电子邮件内容并将其保存在文件中 因此 我正确地添加了具有管道路径的电子邮件转发器 转发地址 电子邮件受保护 cdn cgi l email protection 管道到程序
  • 在 laravel 中禁用特定路由的 csrf

    我有一个支付系统 数据被提交到第三方网站然后被拉回 当数据返回时 它会到达特定的 url 比如 ok 路由 REQUEST transaction 但由于 Laravel 中间件 我遇到了令牌不匹配的情况 第三方支付API无法生成token
  • PHP MVC 应用程序中哪里可以捕获异常?

    我有一个中小型 PHP 应用程序 用于练习 OOP 和 MVC 技能 我有初始化 引导程序调用的文件Router谁打电话控制器 gt 服务层 gt 存储库 数据库 然后将变量发送回视图层 所有依赖项均由 DiC IOC 处理 我创建抽象类
  • PHPMailer 验证失败

    当我尝试在工作中使用 Windows Server 2012 上的 PHPMailer 来使用 SMTP 发送报告电子邮件时 出现身份验证失败错误 我在域上使用服务器管理员帐户 我非常确定密码是正确的 检查下面的代码 require PHP
  • PHP 的 mb_internal_encoding 实际上是做什么的?

    根据 PHP 网站 http www php net manual en function mb internal encoding php它这样做 coding 是用于 HTTP 输入的字符编码名称 字符编码转换 HTTP输出字符编码 转
  • 访问 Magento 购物车和/或结帐中的运费

    请注意 这个问题是关于运费 而不是价格 有一个重要的区别 即运输方式为店主支付的费用是多少 而不是客户支付的费用 The shipping tablerate数据库表包括一个cost字段 该字段填充在Mage Shipping Model
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • Microsoft VS Code:当我尝试启动程序时,出现错误“spawn php ENOENT”

    我正在尝试在 Microsoft VS Code 上运行 PHP 代码 当我单击启动时 唯一发生的事情是调试控制台中出现错误 生成 php ENOENT 为了解决这个问题 我将 XDebug 的 dll 文件放入 ext 文件夹中 我将 p
  • Laravel 意外错误“类用户包含 3 个抽象方法...”

    在 Laravel 上编写我的身份验证应用程序时 我遇到了一个以前从未见过的错误 我已经集思广益了近一个小时来解决这个问题的原因 但仍然找不到解决方案 Error User 类包含 3 个抽象方法 因此必须声明为抽象方法或实现其余方法 Il
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • Monolog,如何将 PHP 数组记录到控制台?

    我正在使用浏览器处理程序将消息记录到 JS 控制台 require once vendor autoload php use Monolog Logger use Monolog Handler BrowserConsoleHandler
  • preg_match 所有以@开头的单词?

    我对正则表达式不太确定 所以我不得不问你 如何用 PHP 判断字符串中是否包含以 开头的单词 例如我有一个像 This is for codeworxx 这样的字符串 我很抱歉 但我没有任何起点 希望你能帮忙 谢谢 萨沙 好的 谢谢你的结果

随机推荐

  • 当替换构造函数执行时, std::Optional 不应该包含它的值吗?

    在实际代码中 构造函数可能非常复杂 因此emplace of a std optional可以查询选项本身的状态 当发生这种情况时 通常会有点复杂 但这里有一个 人为的 最小示例 include
  • 更改 UIAlertView 中取消按钮的位置?

    我注意到 当我从 iPhone 主屏幕删除应用程序时 出现的警报视图左侧显示 删除 按钮 右侧显示 取消 按钮 但是 当我使用 UIAlertView 在应用程序中构建删除功能时 按钮似乎仅显示左侧的 取消 和右侧的 删除 我希望我的应用程
  • Android:获取Facebook好友列表

    我正在使用脸书软件开发工具包 https github com facebook facebook android sdk 在墙上张贴消息 现在我需要获取 Facebook 好友列表 有人能帮我解决这个问题吗 编辑 try Facebook
  • Android 设置视图位置 - setY 与 setTop

    我打算以编程方式移动按钮的位置 按钮处于相对布局 我研究发现我们可以使用 setY or setTop 看起来它们的工作原理应该是一样的 但就我而言 setTop 根本不改变位置并且 setY 仅有效 我不确定我误解了什么 但这对我来说很奇
  • 如何摆脱 VS Code 中的“同步更改 1 ↑”按钮?

    最近 由于某种原因 每次我想要将更改推送到 GitHub 存储库时 我都必须按此按钮 我不记得是否有一个设置是我不小心切换的 我也从未在 VS Code 环境之外更改我的存储库 我正在使用 Gatsby GitHub Netlify 设置
  • 软键盘覆盖 PopupWindow 中的 EditText

    我整理了一个简单的测试项目 它显示一个包含 EditText 的 PopupWindow 在 Android 2 2 上 当我点击 EditText 时 会显示软键盘 正如我所期望的那样 但是 软键盘覆盖了 EditText 并且我无法平移
  • APC缓存碎片问题

    我在 CentOS 服务器 5 上运行 APC php 缓存 每天 13 000 次访问 运行 php 5 3 3 APC 3 1 4 和 4Gb RAM 在过去的几周里 我经历了很多 unable to allocate memory f
  • 响应图表不受控制地增长

    我有一个 vue 组件 它实现了 vue chartjs 的 Horizo ntalBar 组件 我将其渲染为 bootstrap vue 表中的单元格 我的愿望是让图表保持固定的高度 但随着窗口的增大 缩小而水平缩放 当页面首次加载时 图
  • 使用堆栈反转数组

    我正在尝试使用堆栈反转数组 但是 我收到错误arr i stack top 在 Eclipse 中解决它的建议是将其更改为arr i stack pop 或添加演员阵容 还有其他方法吗 或者我犯了一个错误 我看到教程和问题询问如何使用堆栈反
  • 如何在 R 中使用 H2o 从 SQL Server 加载表?

    我尝试使用 h2o 将表加载到 R 中 但出现以下错误 my data lt h2o import sql table my sql conn table username password 错误 意外的 HTTP 状态代码 500 服务器
  • Javascript - innerHTML 不适用于 HTML 选择菜单

    在我的 HTML 页面中 我有 2 个选择菜单 其 ID 为 月 和 日 页面加载时 日 为空 月 有 12 个选项 其值 1 12 对应于一月至十二月 month 有一个 onchange 事件调用此函数 function showOut
  • 属性 KeyValuePair.Value 没有 setter

    我正在使用一个Dictionary
  • Java 中的时区

    我允许我的网络应用程序上的用户根据他们选择的时区安排活动 我想向最终用户提供一份良好的时区列表 然后将其轻松转换为java util TimeZone服务器端的对象 String TimeZone getAvailableIds 是我可以使
  • 从 vs 2017 以编程方式连接到 TFS

    我在用TFS 15 x package Error Microsoft TeamFoundation TeamFoundationServerUnauthorizedException TF30063 您无权访问 https myproje
  • 使用钩子时,React 批量状态更新功能是否有效?

    对于类组件 this setState如果在事件处理程序内部 则调用批处理 但是如果状态在事件处理程序之外更新并使用 会发生什么useState hook function Component const a setA useState a
  • StandardScaler -ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值

    我有以下代码 X df X as matrix header 1 col num scaler preprocessing StandardScaler fit X X nor scaler transform X 并得到以下错误 File
  • 如何使用 Objective-C 判断 iPhone 是否连接到 wifi 网络?

    在 Objective C iPhone 应用程序的上下文中 我需要能够判断 iPhone 是否已连接到 wifi 网络 并在可能的情况下侦听此状态的变化 有谁知道如何做到这一点 谢谢 加布伊 正如其他人提到的 可达性样本 https de
  • 在 Reactjs 中的 EsLint“react / jsx-props-no-spreading”错误中禁用

    安装 EsLint 后 我 出现的错误之一如下 禁止传播 propeslint react jsx props no spreading 我想在 EsLint 配置中创建一条规则来忽略此错误 但我发现的示例不起作用 这是创建全局异常的格式
  • 正则表达式 Windows 路径验证器

    我试图找到一个针对 Javascript 的 Windows 文件路径验证 但似乎没有一个能够满足我想要的要求 所以我决定自己构建它 要求如下 路径不能为空 可能以 x x 开头 后跟文件名 无文件 需要延期 文件名不能包含以下特殊字符 文
  • PHP:可以包含 file_exists() 说不存在的文件

    在我的脚本中 我设置了包含路径 以便应用程序的另一部分也可以包含文件 检查文件是否存在 然后包含它 但是 在我设置包含路径后 file exists 报告该文件不存在 但我仍然可以包含相同的文件