我已将PHP网络系统从Windows托管服务提供商转移到基于Linux的托管服务。
在系统的脚本中,当涉及require_once
时,脚本会停止并将用户留在空白页面。
我尝试过以下两种方法:
尝试1
require_once($_SERVER['DOCUMENT_ROOT'] . '\library\data\Dbec.php') or die("could not load file");
尝试2
require_once(dirname(__FILE__) . '/library/data/Dbec.php') or die("could not load file");
在这两种情况下, die 括号中的文本都没有显示,页面仍为空白。 需要上述文件的脚本位于“ /library/membership/theScript.php ”
基于我迄今为止所做的阅读,也许它与更改php.ini文件中的include_path或以不同方式编写路径有关。
如果是上述任何一种,或者不同的东西,我会感激一些提示。
答案 0 :(得分:1)
检查错误日志,查看是否有任何明显错误。另请尝试设置error_reporting = E_ALL
,并确保php.ini中的display_errors = On
和log_errors = On
。
您尝试包含的文件位于'/library/membership/theScript.php'中,请尝试:
require_once '../data/Dbec.php';
答案 1 :(得分:0)
这不会做你想要的。 require_once
之后的所有内容都被解释为条件。它正在运行($_SERVER['DOCUMENT_ROOT'] . '\library\data\Dbec.php') or die("could not load file")
并返回1
,然后正在运行require_once 1
。
为了使它按预期工作,您需要一组额外的括号:
(require_once($_SERVER['DOCUMENT_ROOT'] . '\library\data\Dbec.php')) or die("could not load file");
虽然,我不确定die()
会被调用。由你决定。
见this related bug report被裁定为“不是错误。”
答案 2 :(得分:0)
问题还可以在文件权限和文件名中。 Windows文件系统是caseinsesetive但linux不是。因此,您必须检查文件名以及执行此脚本的用户是否已尝试在您尝试包含require_once
的文件上读取延迟的事实