require() 给我一个错误,因为 Firefox 正在跳过目录
require() is giving me an error because Firefox is skipping directories
此代码适用于除 Firefox 以外的所有浏览器,我似乎无法找出原因。我试图要求一直回到根目录,但它仍然抛出错误:
"Fatal error: require(): Failed opening required
'PHPMailer/src/PHPMailer.php'
(include_path='.:/opt/cpanel/ea-php70/root/usr/share/pear')"
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
require 'PHPMailer/src/Exception.php';
您的浏览器不会影响路径在您的服务器上的工作方式。
最简单的是,您的 require 语句中的路径不正确。
但是,我建议使用 composer 及其自动加载脚本将 PHPMailer 引入您的项目。
Firefox 应该不能影响这些。
正在检查您的浏览器 none 是否缓存 old/new 版本
尝试:
- 清除历史记录和缓存并重新加载(硬重新加载 Ctrl+Shift+R 或Shift+F5)
- 在私人 window 中打开它 (Ctrl+Shift+P)(名称和快捷方式因浏览器而异)
- 检查 URL(您可能从历史记录中加载了旧的 URL)并确保您拥有正确的
- 检查协议(http 与 https)并确保您的协议正确
如果这些步骤有任何帮助,那肯定不是 Firefox 的问题。
你打开的是简单的页面,还是依赖GET或者POST变量?其他浏览器是否有可能缓存了较旧的工作版本,而只有 Firefox 显示当前损坏的结果?尝试将文件重命名为您以前没有的名称并重新打开它,或者按照我在其他浏览器上列出的步骤进行操作。
正在检查您是否正在编辑正确的文件
当我遇到这种奇怪的行为时,我通常会先尝试编辑文件以显示不同的内容(例如 PHP 文件开头的 echo "current file <br>";
),以确保我正在打开来自各处的正确文件和对代码的更改生效。我遇到过很多这样的问题,通常是切换下划线和破折号,从生产服务器而不是开发服务器打开,等等。当你的调试似乎无法工作时,无论你做什么,最后你都会发现这是一场噩梦你根本没有做任何事情(对你打开的文件)。
包括绝对路径
这对 "Why only Firefox" 问题没有帮助,但您可能希望在包含或相对于当前文件夹时使用绝对路径以确保安全。
而不是
require 'PHPMailer/src/PHPMailer.php';
尝试
require './PHPMailer/src/PHPMailer.php';
或
require __DIR__ . '/PHPMailer/src/PHPMailer.php';
// __DIR__ is a Magic constant showing directory of currently running script (if included, then path of included one)
// see http://php.net/manual/en/language.constants.predefined.php
或
require $_SERVER['DOCUMENT_ROOT'] . '/includes/PHPMailer/src/PHPMailer.php';
// DOCUMENT_ROOT is the root directory of your web, like /var/www/html/site.com
因此解析器不会在您的包含路径中查找文件(除非那是您的 PHPMailer 所在的位置)。
此外,我会在加载库时使用 require_once
而不是 require
。
此代码适用于除 Firefox 以外的所有浏览器,我似乎无法找出原因。我试图要求一直回到根目录,但它仍然抛出错误:
"Fatal error: require(): Failed opening required 'PHPMailer/src/PHPMailer.php' (include_path='.:/opt/cpanel/ea-php70/root/usr/share/pear')"
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
require 'PHPMailer/src/Exception.php';
您的浏览器不会影响路径在您的服务器上的工作方式。
最简单的是,您的 require 语句中的路径不正确。
但是,我建议使用 composer 及其自动加载脚本将 PHPMailer 引入您的项目。
Firefox 应该不能影响这些。
正在检查您的浏览器 none 是否缓存 old/new 版本
尝试:
- 清除历史记录和缓存并重新加载(硬重新加载 Ctrl+Shift+R 或Shift+F5)
- 在私人 window 中打开它 (Ctrl+Shift+P)(名称和快捷方式因浏览器而异)
- 检查 URL(您可能从历史记录中加载了旧的 URL)并确保您拥有正确的
- 检查协议(http 与 https)并确保您的协议正确
如果这些步骤有任何帮助,那肯定不是 Firefox 的问题。
你打开的是简单的页面,还是依赖GET或者POST变量?其他浏览器是否有可能缓存了较旧的工作版本,而只有 Firefox 显示当前损坏的结果?尝试将文件重命名为您以前没有的名称并重新打开它,或者按照我在其他浏览器上列出的步骤进行操作。
正在检查您是否正在编辑正确的文件
当我遇到这种奇怪的行为时,我通常会先尝试编辑文件以显示不同的内容(例如 PHP 文件开头的 echo "current file <br>";
),以确保我正在打开来自各处的正确文件和对代码的更改生效。我遇到过很多这样的问题,通常是切换下划线和破折号,从生产服务器而不是开发服务器打开,等等。当你的调试似乎无法工作时,无论你做什么,最后你都会发现这是一场噩梦你根本没有做任何事情(对你打开的文件)。
包括绝对路径
这对 "Why only Firefox" 问题没有帮助,但您可能希望在包含或相对于当前文件夹时使用绝对路径以确保安全。
而不是
require 'PHPMailer/src/PHPMailer.php';
尝试
require './PHPMailer/src/PHPMailer.php';
或
require __DIR__ . '/PHPMailer/src/PHPMailer.php';
// __DIR__ is a Magic constant showing directory of currently running script (if included, then path of included one)
// see http://php.net/manual/en/language.constants.predefined.php
或
require $_SERVER['DOCUMENT_ROOT'] . '/includes/PHPMailer/src/PHPMailer.php';
// DOCUMENT_ROOT is the root directory of your web, like /var/www/html/site.com
因此解析器不会在您的包含路径中查找文件(除非那是您的 PHPMailer 所在的位置)。
此外,我会在加载库时使用 require_once
而不是 require
。