我用PHP编写了一个CMS。它在大多数服务器上工作正常但我在我最新的主机帐户上遇到了一个奇怪的问题。这可能是路径问题或编码问题。后者似乎没问题,因为这个脚本在我所有其他帐户上都运行正常,这就是我寻求帮助的原因。
当我第一次安装我的CMS工具时,我运行了一个名为“inventory.php”的脚本,在该脚本中,我尝试从脚本的位置获取并显示服务器上的所有目录,这些目录是从root,取决于服务器。我尝试使用一个通向根的全局路径,并从中返回它可以找到的所有目录。如果此文件有效,则整个CMS可以正常工作;如果不是......那就是我在这里的原因。
这是扫描目录的代码:
$main_root = realpath('../../');
echo '<b style="color:orange;">All The dirs on this server:</b><hr><br>';
$whats_on_the_server = array_filter(glob($main_root.'/*'), 'is_dir');
foreach($whats_on_the_server as $on_server) {
$on_server = trim($on_server);
if(stristr($on_server,'.')){
$arr1 = preg_split('^/^',$on_server);
echo $arr1[4].'<br>';
}
}
root是:chroot / home / account /,我的所有文件夹都位于其中。我无法从该目录运行脚本,因此我必须从其他地方访问它。这在其他服务器上工作正常,但在我当前使用的服务器上,如果路径设置如上,它不会返回任何内容。如果我在特定服务器上设置子文件夹的路径,它将获取目录内容,例如:
$main_root = realpath('../../SomeDir');
但我必须得到根目录上所有目录的名称。
答案 0 :(得分:1)
所以你可能没有权限来访问root,但是有权访问给定的子目录吗?
顺便说一下,只需执行
即可转到root$main_root = realpath('/');
总是你最上层的道路!
答案 1 :(得分:0)
您应该使用:
$main_root = dirname(__FILE__).'../../';
其中__FILE__
是当前文件的PHP常量。