Server : Apache
System : Linux iZ2vcgyutqttsd1p850kl8Z 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/saimikebio.com/mobile/ecshopjcw/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/saimikebio.com/mobile/ecshopjcw/check_file_priv.php
<?php



/**

 * ECSHOP 系统文件检测

 * ============================================================================

 * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。

 * 网站地址: http://www.ecshop.com;

 * ----------------------------------------------------------------------------

 * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和

 * 使用;不允许对程序代码以任何形式任何目的的再发布。

 * ============================================================================

 * $Author: liubo $

 * $Id: check_file_priv.php 17217 2011-01-19 06:29:08Z liubo $

*/



define('IN_ECTOUCH', true);



require(dirname(__FILE__) . '/includes/init.php');



if ($_REQUEST['act']== 'check')

{

    /* 检查权限 */

    admin_priv('file_priv');



    /* 要检查目录文件列表 */

    $goods_img_dir = array();

    $folder = opendir(ROOT_PATH . 'data');

    while ($dir = readdir($folder))

    {

        if (is_dir(ROOT_PATH . IMAGE_DIR . '/' . $dir) && preg_match('/^[0-9]{6}$/', $dir))

        {

            $goods_img_dir[] = IMAGE_DIR . '/' . $dir;

        }

    }

    closedir($folder);



    $dir[]                     = ADMIN_PATH;

    $dir[]                     = 'cert';



    $dir_subdir['images'][]    = IMAGE_DIR;

    $dir_subdir['images'][]    = IMAGE_DIR . '/upload';

    $dir_subdir['images'][]    = IMAGE_DIR . '/upload/Image';

    $dir_subdir['images'][]    = IMAGE_DIR . '/upload/File';

    $dir_subdir['images'][]    = IMAGE_DIR . '/upload/Flash';

    $dir_subdir['images'][]    = IMAGE_DIR . '/upload/Media';

    $dir_subdir['data'][]      = DATA_DIR;

    $dir_subdir['data'][]      = DATA_DIR . '/afficheimg';

    $dir_subdir['data'][]      = DATA_DIR . '/brandlogo';

    $dir_subdir['data'][]      = DATA_DIR . '/cardimg';

    $dir_subdir['data'][]      = DATA_DIR . '/feedbackimg';

    $dir_subdir['data'][]      = DATA_DIR . '/packimg';

    $dir_subdir['data'][]      = DATA_DIR . '/sqldata';

    $dir_subdir['temp'][] = 'data';

    $dir_subdir['temp'][] = 'data/backup';

    $dir_subdir['temp'][] = 'data/caches';

    $dir_subdir['temp'][] = 'data/compiled';

    $dir_subdir['temp'][] = 'data/compiled/admin';

    $dir_subdir['temp'][] = 'data/query_caches';

    $dir_subdir['temp'][] = 'data/static_caches';



    /* 将商品图片目录加入检查范围 */

    foreach ($goods_img_dir as $val)

    {

        $dir_subdir['images'][] = $val;

    }



    $tpl = 'themes/'.$_CFG['template'].'/';







    $list = array();



    /* 检查目录 */

    foreach ($dir AS $val)

    {

        $mark = file_mode_info(ROOT_PATH .$val);

        $list[] = array('item' => $val.$_LANG['dir'], 'r' => $mark&1, 'w' => $mark&2, 'm' => $mark&4);

    }



    /* 检查目录及子目录 */

    $keys = array_unique(array_keys($dir_subdir));

    foreach ($keys AS $key)

    {

        $err_msg = array();

        $mark = check_file_in_array($dir_subdir[$key], $err_msg);

        $list[] = array('item' => $key.$_LANG['dir_subdir'], 'r' => $mark&1, 'w' => $mark&2, 'm' => $mark&4, 'err_msg' => $err_msg);

    }



    /* 检查当前模板可写性 */

    $dwt = @opendir(ROOT_PATH .$tpl);

    $tpl_file = array(); //获取要检查的文件

    while ($file = readdir($dwt))

    {

        if (is_file(ROOT_PATH .$tpl .$file) && strrpos($file, '.dwt') > 0)

        {

            $tpl_file[] = $tpl .$file;

        }

    }

    @closedir($dwt);

    $lib = @opendir(ROOT_PATH .$tpl.'library/');

    while ($file = readdir($lib))

    {

        if (is_file(ROOT_PATH .$tpl.'library/'.$file) && strrpos($file, '.lbi') > 0 )

        {

             $tpl_file[] = $tpl . 'library/' . $file;

        }

    }

    @closedir($lib);



    /* 开始检查 */

    $err_msg = array();

    $mark = check_file_in_array($tpl_file, $err_msg);

    $list[] = array('item' => $tpl.$_LANG['tpl_file'], 'r' => $mark&1, 'w' => $mark & 2, 'm' => $mark & 4, 'err_msg' => $err_msg);



    /* 检查smarty的缓存目录和编译目录及image目录是否有执行rename()函数的权限 */

    $tpl_list   = array();

    $tpl_dirs[] = 'data/caches';

    $tpl_dirs[] = 'data/compiled';

    $tpl_dirs[] = 'data/compiled/admin';



    /* 将商品图片目录加入检查范围 */

    foreach ($goods_img_dir as $val)

    {

        $tpl_dirs[] = $val;

    }



    foreach ($tpl_dirs AS $dir)

    {

        $mask = file_mode_info(ROOT_PATH .$dir);



        if (($mask & 4) > 0)

        {

            /* 之前已经检查过修改权限,只有有修改权限才检查rename权限 */

            if (($mask & 8) < 1)

            {

                $tpl_list[] = $dir;

            }

        }

    }

    $tpl_msg = implode(', ', $tpl_list);

    $smarty->assign('ur_here',      $_LANG['check_file_priv']);

    $smarty->assign('list',    $list);

    $smarty->assign('tpl_msg', $tpl_msg);

    $smarty->display('file_priv.html');

}



/**

 *  检查数组中目录权限

 *

 * @access  public

 * @param   array    $arr           要检查的文件列表数组

 * @param   array    $err_msg       错误信息回馈数组

 *

 * @return int       $mark          文件权限掩码

 */

function check_file_in_array($arr, &$err_msg)

{

    $read   = true;

    $writen = true;

    $modify = true;

    foreach ($arr AS $val)

    {

        $mark = file_mode_info(ROOT_PATH . $val);

        if (($mark & 1) < 1)

        {

            $read = false;

            $err_msg['r'][] = $val;

        }

        if (($mark & 2) <1)

        {

            $writen = false;

            $err_msg['w'][] = $val;



        }

        if (($mark & 4) <1)

        {

            $modify = false;

            $err_msg['m'][] = $val;

        }

    }



    $mark = 0;

    if ($read)

    {

        $mark ^= 1;

    }

    if ($writen)

    {

        $mark ^= 2;

    }

    if ($modify)

    {

        $mark ^= 4;

    }



    return $mark;

}



?>