Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同一目录包括在使用PHP的Fedora服务器上发生故障_Php_Linux_Apache_Samba - Fatal编程技术网

同一目录包括在使用PHP的Fedora服务器上发生故障

同一目录包括在使用PHP的Fedora服务器上发生故障,php,linux,apache,samba,Php,Linux,Apache,Samba,我有两个文件如下所示: index.php: <?php include('includes/header.php'); ... 对于includes/header.php,它将显示[dir],其中应显示[dir]/includes。将“includes/”添加到include路径是可行的,但并不可取,因为这样会在生产服务器上失败 上面的代码在生产服务器上运行,在我的开发Fedora服务器上运行良好,直到我尝试更改我的开发环境,使Fedora服务器的文档根成为已装载的CIFS共享

我有两个文件如下所示:

index.php:

<?php  
include('includes/header.php');

...
对于includes/header.php,它将显示[dir],其中应显示[dir]/includes。将“includes/”添加到include路径是可行的,但并不可取,因为这样会在生产服务器上失败

上面的代码在生产服务器上运行,在我的开发Fedora服务器上运行良好,直到我尝试更改我的开发环境,使Fedora服务器的文档根成为已装载的CIFS共享

有什么想法吗?谢谢

工作很好。。。直到我尝试更改我的开发环境,使Fedora服务器的文档根成为已装载的CIFS共享

是否启用SELinux

检查
/var/log/audit/audit.log


我敢打赌SELinux已启用且处于强制模式,并且正在进行干预。

我不想这么说,但您描述的带有
pwd
的行为是100%的预期行为(并且至少在PHP4…可能更早之前)

PHP自动设置当前工作目录(由pwd使用)一次。PHP不会改变它。因此将引用原始的当前工作目录,除非您使用chdir()手动更改它

对于这个问题有各种各样的解决方案;其中大部分你可以在网站上看到

如果它以前工作过,可能在某个地方对include_路径进行了一些更新,更改工作目录的代码不再更改它,或者您使用的实现这种奇怪(但更令人期待)行为的php版本不再这样做

无论如何,我会检查include路径:ini文件或更改include路径的脚本。我猜有些东西是用来更新include_路径的,但现在已经不这么做了


我不确定您是如何移动它的,但我遇到了一些恼人的脚本,.htaccess将auto_prepend_文件设置为完全位于网站结构之外的文件的硬编码路径,从而将include路径(以及其他内容)设置为网站结构内的某个位置

使用“noserverino”选项装载CIFS共享应该可以解决此问题,例如:

mount -t cifs -o noserverino //host/share /mnt

关于这项工作的完整解释可以在这里找到:

是的,它们都在同一个目录中。而且../config.php不起作用,就像我说的,它就像在父目录中一样,因为include'includes/config.php'确实起作用。我重写了我的答案,因为我在发布后意识到我错了。请检查我的更新,以了解这次可能确实正确的内容。;)它目前处于允许模式,SELinux是我首先检查的东西之一(这几乎是我存在的祸根),我用这种方式排除了一些问题。audit.log没有显示任何类似于拒绝的内容。头中的
realpath(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>的输出是什么?
dirname(\\\\\\\\\\\\\\\\文件)
的输出是什么?dirname中给出的目录应该与realpath中给出的路径完全相同,并且两者都应该匹配文件的位置。当根据修改后的
dirname(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>的结果给出一个完全限定的路径时,包含config.php是否有效?
realpath(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。似乎realpath值没有正确填充?
system('pwd');
mount -t cifs -o noserverino //host/share /mnt