require()给我一个错误,因为Firefox正在跳过目录

时间:2018-01-17 18:13:51

标签: php firefox fatal-error

此代码适用于除Firefox以外的所有浏览器,我似乎无法找到原因。我试图要求一直回到根目录,但它仍然会引发错误:

  

"致命错误:require():需要打开失败   ' PHPMailer的/ SRC / PHPMailer.php'   (包含路径=':/选择/的cPanel / EA-php70 /根的/ usr /共享/梨')"

require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
require 'PHPMailer/src/Exception.php';

2 个答案:

答案 0 :(得分:1)

您的浏览器不会影响路径在服务器上的工作方式。

最简单的说,您在require语句中没有正确的路径。

但是,我建议使用composer及其自动加载脚本将PHPMailer引入您的项目。

答案 1 :(得分:0)

Firefox不应该影响其中任何一个。

检查您的浏览器是否都没有缓存旧版本/新版本

尝试:

  • 清除历史记录和缓存并重新加载(硬重装 Ctrl + Shift + R Shift + F5
  • 在私人窗口中打开它( Ctrl + Shift + P )(不同浏览器的名称和快捷方式各不相同)
  • 检查网址(您可能已从历史记录中加载旧网址)并确保您拥有正确的网址
  • 检查协议(http vs https)并确保您拥有正确的协议

如果这些步骤中的任何一个有帮助,那肯定不是Firefox的问题。

您打开一个简单的页面,还是依赖GET或POST变量?是否有其他浏览器缓存旧的工作版本,只有Firefox显示当前损坏的结果?尝试将文件重命名为之前没有的文件并重新打开,或者我在其他浏览器上列出的步骤。

检查您是否正在编辑正确的文件

当我得到这样奇怪的行为时,我通常会尝试编辑文件以显示不同的内容(如PHP文件开头的echo "current file <br>";),首先要确保我从任何地方打开正确的文件代码更改生效。我遇到了很多这样的问题,它通常是切换下划线和短划线,从生产服务器而不是开发服务器打开等等。当你的调试看起来无论你做什么都没有用,最后你发现它是一场噩梦你没有做任何事情(对你正在打开的文件)。

包括绝对路径

这对“为什么只有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