在PHP中的相对路径不工作的服务器(Relative paths in PHP not workin

2019-09-16 14:43发布

背景信息:我一直在开发一个自托管自己的服务器(本地主机),并拥有一切工作都在Facebook上的应用程序。 最近,我上传了我的文件到我的共享主机在线服务器(HostGator的),并弹出一个奇怪的错误。

我require_once()函数似乎忽略了HostGator的服务器上的相对路径。 例如,在index.php中,我有require_once( 'FB / login.php中')。 这将引发错误,指出在example.com/login.php文件不能被发现。 为什么需要()无视我的路径FB一部分? 请记住,这工作完全正常我的私人服务器,本地主机上。 我做了一些谷歌搜索,并通过进入php.ini并打开包含路径=解决问题的一半“:”。 这摆脱了第一个错误,但现在的login.php也有require_once(“FB / SDK / Facebook.php”),并不能找到该文件。 据我所知,它就会变得混乱与嵌套的要求,但是这确实我的本地服务器上的工作。 两个服务器都PHP5,我也确信,在php.ini文件类似。 默认情况下,本地主机php.ini中已经包含路径评论。 我甚至去了,只要与我的本地一个替换在线php.ini文件。 依然没有。 我已经使用绝对路径试过了,他们做的工作,但我有很多包括和需要在整个我的代码,不希望把代码每一个路径。 任何见解? 这是一个非常真气的问题,我希望有一个简单的解决方案。

谢谢!


嗯,我做了一吨的研究和最终使用$ _ SERVER [“DOCUMENT_ROOT”]。“FB / login.php中”作为我对我所有的要求,包括路径。 修正了我所有的问题,感谢上帝

Answer 1:

我停止使用相对路径很久以前,避免那种你正在经历现在的烦恼。 考虑做像所有的PHP框架做 - 他们定义一个变量,它指示恰恰是服务器的根目录,那么你可以用它来构建绝对路径文件。

你可以通过添加这个给你根index.php文件:

define('DOCROOT', realpath(dirname(__FILE__)).'/');

然后,它只是一个通过所有准备事项require报表和第一添加DOCROOT:

require_once('fb/login.php');

变为:

require_once(DOCROOT . 'fb/login.php');

你甚至可以做一个全局搜索和替换替换require_once('require_once(DOCROOT . '



Answer 2:

我不能说我知道如何解决这个问题,但这里是我做了几次目录的问题:

第一件事就是打电话给getcwd()使用文件require_once看,如果你真的,你以为你是。

其次,尽量./fb/而不是fb/



Answer 3:

你为什么不尝试require_once('../fb/login.php'); 而不是改变php.ini文件?

或只是require_once('/fb/login.php');



文章来源: Relative paths in PHP not working on server