Php 包含/要求路径解析
我在PHP中遇到这样的情况,一台服务器上缺少一个Php 包含/要求路径解析,php,ubuntu,include,Php,Ubuntu,Include,我在PHP中遇到这样的情况,一台服务器上缺少一个include,而另一台服务器上没有(我没有设置服务器,所以我不能告诉您更多;我不是真正的devops人,所以我在这里问这个问题)。两台服务器上的代码都是相同的,并且都运行带有PHP FPM 5.5.9的Ubuntu 14.04 以下是一个例子: file1.php <?php var_export('1'); include_once('somedir/file2.php'); include_once('include.php
include
,而另一台服务器上没有(我没有设置服务器,所以我不能告诉您更多;我不是真正的devops人,所以我在这里问这个问题)。两台服务器上的代码都是相同的,并且都运行带有PHP FPM 5.5.9的Ubuntu 14.04
以下是一个例子:
file1.php
<?php
var_export('1');
include_once('somedir/file2.php');
include_once('include.php');
?>
include.php
<?php
var_export('2');
function foo() {}
?>
<?php
var_export('4');
function foo() {}
?>
somedir/file2.php
<?php
var_export('3');
//notice it has the same name as include.php in the starting directory
include_once('include.php');
?>
somedir/include.php
<?php
var_export('2');
function foo() {}
?>
<?php
var_export('4');
function foo() {}
?>
如果导航到file1.php,工作服务器将打印1、3、2。如果我在“断开”的服务器上导航到file1.php,我会得到一个错误,说函数foo不能被重新定义
我的“坏”服务器上是否存在导致它包含第二个包含的设置?谢谢 在两个系统上都将其放入file1.php中:
echo get_include_path()代码>看看发生了什么(TM)。基本上就是错误所说的,只有定义了特定的函数,如果你包括两个文件,它们都试图定义<代码>()/<代码>,它报告的错误并不是你认为会被破坏的。也许您在没有投诉的服务器上报告了错误。我的问题是,为什么一台服务器包含include.php
,为什么一台服务器同时包含include.php
和somedir/include.php
。这两个函数(foo)是不同的还是相同的?他们两人都被成功呼叫的可能性很小。不能有两个同名的函数。请在一台服务器或另一台服务器上检查set\u include\u path
。我敢打赌,一个有效的包含路径集。我认为phpinfo()
将告诉您。嗯,并告诉我们发生了什么,好吗?看起来有人正在使用nginx中的匹配模式将php文件定向到php fpm,并将当时的include_路径设置为$document_root/someotherstuff。返回到以开头的正常包含路径。似乎产生了我所期望的行为。谢谢