glob函数无法扫描joomla中的文件夹

时间:2016-10-23 11:52:45

标签: php function joomla glob

我正在为joomla(后端)创建一个模块,该模块必须扫描给定文件夹中的图像(超出管理目录)并显示每个模块的输入字段。 $dir变量从joomla模块的xml文件字段获取iDirName字段的值,用户从模块编辑页面输入该字段。

以下文件仅在目录为图像并在模块目录中搜索文件夹而非搜索网站的根目录时才有效。即使我在模块映像目录中添加了另一个directory(),它也不起作用,因此它可以扫描/ administrator / modules / mod_slide_url_add / images /这个目录,但不能扫描/ administrator / modules / mod_slide_url_add / images / headers。

我需要能够从joomla root扫描/ images / headers目录。 之前我使用一个小形式的动作到这个PHP文件,它工作得很好,当我输入这样的目录../../../images/headers但在这种情况下我被重定向从joomla管理页面到清除页面使用该php文件并在清晰的页面上获取输入字段,而不是在joomla页面上。现在我试图直接在joomla页面上显示那些字段,没有任何重定向。 你能救我吗?

<?PHP
    $dir = $params->get('iDirName','1');
    echo "Dir=";
    echo $dir;
?>

<table border="0" cellspacing="0" cellpadding="0" align="center">
    <form action="modules/mod_slide_url_add/ValidateWriteLinks.php" autocomplete="off" method="post">
    <?PHP
        if(isset($dir) && $dir!='' && !empty($dir))
        {
            $slcfN=0;
            $sclfTargetDirectory = $dir;
            foreach(glob($sclfTargetDirectory.'*.{jpg,png,gif}',GLOB_BRACE) as $slcfFileName)
            {
                $slcfN++;
                $info = pathinfo($slcfFileName);
                $file_name =  basename($slcfFileName,'.'.$info['extension']);
                $slcfFileName = $sclfTargetDirectory.$file_name.'.txt';
                if(!file_exists($slcfFileName))
                {
                    $FileHandle = fopen($slcfFileName, 'w') or die("can't open file");
                    fclose($FileHandle);
                }
                echo "<tr><td>";
                echo "File No $slcfN -".basename($slcfFileName);
                echo "</td><td>";
                echo "<input type='text' name='URLNo$slcfN' maxlength='105' size='35'>";
                echo "<input type='checkbox' name='ChkBoxNo$slcfN' value='Yes' /> Del File Contents...";
                echo "<input type='hidden' name='FilenameNo$slcfN' value='$slcfFileName'>";
                echo "</td></tr>";
            }
            echo "<tr><td>";
            echo "<input type='hidden' name='slcCounterS' value='$slcfN'>";
            echo "</td><td>";
            echo "<input type='submit' value='E N T E R'>";
            echo "</td></tr>";
        }else{echo"ERROR LVL1";}
    ?>
    </form>
</table>

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,添加到第一个php代码

$rootpath = JPATH_ROOT;

然后改变了这个

$sclfTargetDirectory = $dir;

到这个

$sclfTargetDirectory = $rootpath.$dir;

和模块按我的意愿工作。