Phalcon Framework 3.0.4

Phalcon\Mvc\Dispatcher\Exception: Action 'aboutus' was not found on handler 'index'

/var/www/html/app/Bootstrap.php (547)
#0Phalcon\Mvc\Dispatcher->_throwDispatchException(Action 'aboutus' was not found on handler 'index', 5)
#1Phalcon\Dispatcher->_dispatch()
#2Phalcon\Dispatcher->dispatch()
/var/www/html/app/Bootstrap.php (547)
<?php
 
namespace MookeCMS;
 
use Phalcon\Logger\Adapter\File as FileAdapter;
use Phalcon\Http\Response;
use Phalcon\Flash\Session;
use Phalcon\DI\FactoryDefault;
use Phalcon\Registry;
use Phalcon\Loader;
use Phalcon\Db\Adapter\Pdo\Mysql;
use Phalcon\Session\Adapter\Redis;
use Phalcon\Mvc\Url;
use Phalcon\Mvc\Application;
use Phalcon\Assets\Filters\Jsmin;
use Phalcon\Session\Adapter\Files;
 
use Application\Mvc\Helper;
use Application\Acl\DefaultAcl;
use Application\Assets\Manager;
use Application\Mvc\Router\DefaultRouter;
use Application\Assets\Filter\Less;
use System\Model\Configuration;
use Application\Mvc\Config;
 
use Phalcon\Mvc\Collection\Manager as MongodbManager;
 
/**
 * Bootstrap
 * @copyright Copyright (c) 2015 Markboo (http://cnski.cn)
 * @author Markboo <markboo@foxmail.com>
 */
class Bootstrap
{
    /**
     * 监控脚本运行用
    **/
    private $running;
 
    /**
    * 启动函数
    **/
    public function run()
    {
        //程序中断时会调用该函数注册的函数
        //register_shutdown_function( array( $this, 'shutdown_handler' ) );
        //打开错误信息
        //error_reporting( E_ERROR | E_WARNING | E_PARSE );
        //设置错误句柄
        //set_error_handler( array( $this, 'displayErrorHandler' ) );
 
        //开始监测是否程序中断
        $this->running = true;
 
        //创建di
        $di = new FactoryDefault();
 
        //载入配置
        require_once APPLICATION_PATH . '/modules/Application/Mvc/Config.php';
 
        $config = Config::get();
        $di->set( 'config', $config );
 
        //检查系统状态,各依赖关系是否可用
        $this->checkSystemStatus( $di );
 
        //创建注册器
        $registry = new Registry();
        $di->set('registry', $registry );
 
        //创建载入器
        $loader = new Loader();
        $loader->registerNamespaces( $config->loader->namespaces->toArray() );
 
        //通过配置文件注册目录
        $loader->registerDirs( [APPLICATION_PATH . "/plugins/"] );
        $loader->register();
 
        require_once APPLICATION_PATH . '/../vendor/autoload.php';
 
        try{
            //创建mysql数据库连接
            $db = new Mysql([
                "host"     => $config->database->host,
                "username" => $config->database->username,
                "password" => $config->database->password,
                "dbname"   => $config->database->dbname,
                "charset"  => $config->database->charset,
            ]);
            $di->set( 'db', $db );
 
        } catch ( \Exception $e ) {
            $this->exceptionExit( $e, 'MySQL数据库访问出错!<br>返回错误信息:' );
        }
 
        //设置mongo连接
        /*
        $di->set( 'mongo', function() use ($config) {
            $connStr= $config->mongodb->server .'/manage';
            $mongo = new \Mongo($connStr);
            $dbName = 'manage';
            return $mongo->$dbName;
        }, true);
        */
        $di->set(
            "mongo",
            function () use ($config) {
                $mongo = new \MongoClient(
                    $config->mongodb->server,array(
                        "db" => $config->mongodb->db,
//                        "username" => $config->mongodb->username,
//                        "password" => $config->mongodb->password
                    )
                );
                return $mongo->selectDB("manage");
            },
            true
        );
 
        //new MongoClient("mongodb://localhost:27017", array("username" => "joe", "password" => "test"));
 
        //设置collectionManager
        $di->set( 'collectionManager', function() {
            return new MongodbManager();
        });
 
        //初始化图
        $this->initView($di);
 
        //创建url
        $url = new Url();
        $url->setBasePath( $config->base_path );
        $url->setBaseUri( $config->base_path) ;
        $di->set( 'url', $url );
 
        //初始化缓存Cache
        $this->initCache($di);
 
        //读取CMS配置模块的配置
        $cmsModel = new Configuration();
        $registry->cms = $cmsModel->getConfig();
 
        //Application
        $application = new Application();
        $application->registerModules( $config->modules->toArray() );
 
        //事务管理器
        $this->initEventManager($di);
 
        //初始化Session
        $this->initSession($di);
 
        //初始化支付log记录
        try {
            $paylogger = new FileAdapter( APPLICATION_PATH . $config->work_path->pay_log_file );
            $di->set( 'paylogger', $paylogger );
        } catch ( \Exception $e ) {
            $this->exceptionExit( $e, '支付日志写入出错!<br>返回错误信息:' );
        }
 
        //JS Assets
        $this->initAssetsManager($di);
 
        //提示框标签
        $flash = new Session([
            'error'   => 'ui orange inverted flash segment',
            'success' => 'ui green inverted flash segment',
            'notice'  => 'ui blue inverted flash segment',
            'warning' => 'ui orange inverted flash segment',
        ]);
 
        $di->set( 'flash', $flash );
        $di->set( 'helper', new Helper() );
        $di->set( 'modules', function() use ($application) { return $application->getModules(); }, true );
 
        //载入访问控制策略
        $acl = new DefaultAcl();
        $di->set( 'acl', $acl );
 
        //初始化路由
        $this->initRouting($application, $di);
 
        $application->setDI($di);
 
        //主调度进程开始
        $this->dispatch($di);
 
        //结束监测是否程序中断
        $this->running = false;
    }
 
    /**
     * 检查系统状态,各依赖关系是否可用
     * @param $di
     * @return void
     */
    private function checkSystemStatus($di)
    {
        $config = $di->get('config');
 
        //创建mongodb数据库连接,检查
        try {
            $mongo = new \MongoClient( $config->mongodb->server, array(
                "db" => $config->mongodb->db//,
//                "username" => $config->mongodb->username,
//                "password" => $config->mongodb->password
            ));
        } catch ( \Exception $exception ) {
            $this->exceptionExit( $exception, 'MongoDB连接出现错误!' );
        }
 
        if ( !isset($config->work_path->pay_log_file) ) $this->exceptionExit( null, '环境配置中pay_log_file支付日志参数未设定!' );
        if ( !is_writeable( APPLICATION_PATH . $config->work_path->pay_log_file ) ) $this->exceptionExit( null, '支付日志文件不可写!' );
 
        if ( !isset($config->work_path->data_path) ) $this->exceptionExit( null, '环境配置中data_path数据目录志参数未设定!' );
        if ( !is_writeable( APPLICATION_PATH . $config->work_path->data_path ) ) $this->exceptionExit( null, 'data数据目录不可写!' );
 
        if ( !isset($config->work_path->qrcode_path) ) $this->exceptionExit( null, '环境配置中qrcode_path二维码存储目录参数未设定!' );
        if ( !is_writeable( APPLICATION_PATH . $config->work_path->qrcode_path ) ) $this->exceptionExit( null, 'public/static/payqrcode二维码存储目录不可写!' );
 
        if ( !isset($config->work_path->upload_file) ) $this->exceptionExit( null, '环境配置中upload_file上传图片目录参数未设定!' );
        if ( !is_writeable( APPLICATION_PATH . $config->work_path->upload_file ) ) $this->exceptionExit( null, 'public/static/files上传图片目录不可写!' );
    }
 
    /**
     * 初始化路由
     * @param $di
     * @return void
     */
    private function initRouting($application, $di)
    {
        $router = new DefaultRouter();
        $router->setDi($di);
        foreach ($application->getModules() as $module) {
            $routesClassName = str_replace('Module', 'Routes', $module['className']);
            if (class_exists($routesClassName)) {
                $routesClass = new $routesClassName();
                $router = $routesClass->init($router);
            }
            $initClassName = str_replace('Module', 'Init', $module['className']);
            if (class_exists($initClassName)) {
                new $initClassName();
            }
        }
        $di->set('router', $router);
    }
 
    /**
     * 初始化资源文件管理
     * @param $di
     * @return void
     **/
    private function initAssetsManager( $di )
    {
        $config = $di->get('config');
        $assetsManager = new Manager();
 
        $js_collection = $assetsManager->collection('js')
            ->setLocal(true)
            ->addFilter(new Jsmin())
            ->setTargetPath(ROOT . '/assets/js.js')
            ->setTargetUri('assets/js.js')
            ->join(true);
 
        if ($config->assets->js) {
            foreach ($config->assets->js as $js) {
                $js_collection->addJs(ROOT . '/' . $js);
            }
        }
 
        //Admin JS Assets
        $assetsManager->collection('modules-admin-js')
            ->setLocal(true)
            ->addFilter(new Jsmin())
            ->setTargetPath(ROOT . '/assets/modules-admin.js')
            ->setTargetUri('assets/modules-admin.js')
            ->join(true);
 
        //Admin LESS Assets
        $assetsManager->collection('modules-admin-less')
            ->setLocal(true)
            ->addFilter(new Less())
            ->setTargetPath(ROOT . '/assets/modules-admin.less')
            ->setTargetUri('assets/modules-admin.less')
            ->join(true)
            ->addCss(APPLICATION_PATH . '/modules/Admin/assets/admin.less');
 
        $di->set('assets', $assetsManager);
    }
 
    /**
     * 初始化事件管理器
     * @param $di
     * @return void
     **/
    private function initEventManager( $di )
    {
        $eventsManager = new \Phalcon\Events\Manager();
        $dispatcher = new \Phalcon\Mvc\Dispatcher();
 
        $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) use ($di) {
            new \MookeCMS\Plugin\CheckPoint($di->get('request'));
            new \MookeCMS\Plugin\Localization($dispatcher);
            new \MookeCMS\Plugin\AdminLocalization($di->get('config'));
            new \MookeCMS\Plugin\Acl($di->get('acl'), $dispatcher, $di->get('view'));
            new \MookeCMS\Plugin\MobileDetect($di->get('session'), $di->get('view'), $di->get('request'));
            new \MookeCMS\Plugin\Role($di->get('session'), $di->get('view'));
        });
 
        $eventsManager->attach("dispatch:afterDispatchLoop", function ($event, $dispatcher) use ($di) {
            new \MookeCMS\Plugin\Title($di);
        });
 
        //Profiler
        $registry = $di->get( 'registry' );
 
        if ($registry->cms['PROFILER']) {
            $profiler = new \Phalcon\Db\Profiler();
            $di->set('profiler', $profiler);
 
            $eventsManager->attach('db', function ($event, $db) use ($profiler) {
                if ($event->getType() == 'beforeQuery') {
                    $profiler->startProfile($db->getSQLStatement());
                }
                if ($event->getType() == 'afterQuery') {
                    $profiler->stopProfile();
                }
            });
        }
 
        $db = $di->get('db');
        $db->setEventsManager($eventsManager);
 
        $dispatcher->setEventsManager($eventsManager);
        $di->set('dispatcher', $dispatcher);
    }
 
    /**
     * 初始化视图引擎
     * @param $di
     * @return mixed $view
     **/
    private function initView( $di )
    {
        $view = new \Phalcon\Mvc\View();
 
        define('MAIN_VIEW_PATH', '../../../views/');
        $view->setMainView(MAIN_VIEW_PATH . 'main');
        $view->setLayoutsDir(MAIN_VIEW_PATH . '/layouts/');
        $view->setLayout('main');
        $view->setPartialsDir(MAIN_VIEW_PATH . '/partials/');
 
        //Volt
        $volt = new \Application\Mvc\View\Engine\Volt($view, $di);
        $volt->setOptions(['compiledPath' => APPLICATION_PATH . '/../data/cache/volt/']);
        $volt->initCompiler();
 
        $compiler = $volt->getCompiler();
        //加入md5过滤器,用在供货管理页面的时间验证上
        $compiler->addFilter('hash', 'md5');
 
        $compiler->addFunction(
            'contains_text',
            function ( $resolvedArgs, $exprArgs ) {
                return 'stripos(' . $resolvedArgs . ')';
            }
        );
 
        $compiler->addFunction(
            'number_format',
            function ( $resolvedArgs ) {
                return 'number_format(' . $resolvedArgs . ', 2 )';
            }
        );
 
        $compiler->addFunction(
            'number',
            function ( $resolvedArgs ) {
                return 'number_format(' . $resolvedArgs . ', 0 )';
            }
        );
        $compiler->addFunction('allow_check', function( $arg ) use ($di) {
            return 0;
        });
 
        $compiler->addFunction('replace_json', function( $arg ) {
            return 11;
        });
 
        $compiler->addFunction('mb_substr', 'mb_substr');
        $compiler->addFilter('mb_substr', 'mb_substr');
        $compiler->addFunction("dump", "print_r");
        $compiler->addFunction('in_array', 'in_array');
 
        $phtml = new \Phalcon\Mvc\View\Engine\Php($view, $di);
        $viewEngines = [
            ".volt"  => $volt,
            ".phtml" => $phtml,
        ];
 
        $view->registerEngines($viewEngines);
 
        $ajax = $di->get('request')->getQuery('_ajax');
        if ($ajax) {
            $view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_LAYOUT);
        }
 
        $di->set('view', $view);
 
        return $view;
    }
 
    /**
     * 初始化Session
     * @desc
     * @param $di
     */
    private function initSession( $di )
    {
        $config = $di->get('config');
 
        $session = null;
 
        switch ( $config->session ) {
            case 'redis':
                //初始化session并保存至redis里
                $session = new Redis([
                    "uniqueId" => $config->redis->uniqueid,
                    "host" => $config->redis->host,
                    "port" => $config->redis->port,
                    "lifetime" => $config->redis->lifetime,
                    "persistent" => $config->redis->persistent,
                    "prefix" => $config->redis->prefix
                ]);
                break;
            case 'file':
                //初始化session并保存至file里
                $session = new Files();
                break;
        }
 
        if( !$session ) {
            error_log( 'init session exception exit;' );
            $this->exceptionExit( null, $config->session.'初始化Session保存服务访问出错、Session保存位置检查异常!<br>返回错误信息:' );
        }
 
        try {
            $session->start();
        } catch ( \Exception $e ) {
            error_log( '--- session exception ---' );
            $this->exceptionExit( $e, $config->session.'初始化Session保存服务访问出错、Session启动异常<br>返回错误信息:' );
        }
 
        $di->set( 'session', $session );
    }
 
    /**
     * 初始化缓存,file类型、memcached类型
     * @param $di
     * @return void
     */
    private function initCache( $di )
    {
        $config = $di->get('config');
 
        $cacheFrontend = new \Phalcon\Cache\Frontend\Data([
            "lifetime" => 60,
            "prefix" => HOST_HASH,
        ]);
 
        $cache = null;
 
        switch ($config->cache) {
 
            case 'file':
                $cache = new \Phalcon\Cache\Backend\File($cacheFrontend, [
                    "cacheDir" => APPLICATION_PATH . "/../data/cache/backend/"
                ]);
                break;
 
            case 'memcache':
                $cache = new \Phalcon\Cache\Backend\Memcache(
                    $cacheFrontend, [
                    "host" => $config->memcache->host,
                    "port" => $config->memcache->port,
                ]);
                break;
 
            case 'mongodb':
                $cache = new \Phalcon\Cache\Backend\Mongo($cacheFrontend, [
                    'server'     => $config->mongodb->full_url, //$config->mongodb->server, //"mongodb://localhost:22222",
                    'db'         => $config->mongodb->db, //'caches',
                    'collection' => $config->mongodb->collection, //'images'
                ]);
                break;
 
        }
 
        $di->set('cache', $cache, true);
        $di->set('modelsCache', $cache, true);
 
        \Application\Widget\Proxy::$cache = $cache; // Modules Widget System
 
        $modelsMetadata = new \Phalcon\Mvc\Model\Metadata\Memory();
 
        $di->set('modelsMetadata', $modelsMetadata);
    }
 
    /**
     * 调度器管理
     * @param $di
     * @return void
     **/
    private function dispatch($di)
    {
        $router = $di['router'];
 
        $router->handle();
 
        $view = $di['view'];
 
        $dispatcher = $di['dispatcher'];
 
        $response = $di['response'];
 
        $dispatcher->setModuleName($router->getModuleName());
        $dispatcher->setControllerName($router->getControllerName());
        $dispatcher->setActionName($router->getActionName());
        $dispatcher->setParams($router->getParams());
 
        $moduleName = \Application\Utils\ModuleName::camelize($router->getModuleName());
 
        $ModuleClassName = $moduleName . '\Module';
        if (class_exists($ModuleClassName)) {
            $module = new $ModuleClassName;
            $module->registerAutoloaders();
            $module->registerServices($di);
        }
 
        $view->start();
 
        $registry = $di['registry'];
        if ($registry->cms['DEBUG_MODE']) {
            $debug = new \Phalcon\Debug();
            $debug->listen();
 
            $dispatcher->dispatch();
        } else {
            try {
                $dispatcher->dispatch();
            } catch (\Phalcon\Exception $e) {
                // Errors catching
 
                $view->setViewsDir(__DIR__ . '/modules/Index/views/');
                $view->setPartialsDir('');
                $view->e = $e;
 
                if ($e instanceof \Phalcon\Mvc\Dispatcher\Exception) {
                    $response->setHeader(404, 'Not Found');
                    $view->title = '错误页面';
                    $view->partial('error/error404');
                } else {
                    $response->setHeader(503, 'Service Unavailable');
                    $view->title = '错误页面';
                    $view->partial('error/error503');
                }
                $response->sendHeaders();
                echo $response->getContent();
                return;
 
            }
        }
 
        $view->render(
            $dispatcher->getControllerName(),
            $dispatcher->getActionName(),
            $dispatcher->getParams()
        );
 
        $view->finish();
 
        $response = $di['response'];
 
        //AJAX
        $request = $di['request'];
        $_ajax = $request->getQuery('_ajax');
 
        if ($_ajax) {
            $contents = $view->getContent();
 
            $return = new \stdClass();
            $return->html = $contents;
            $return->title = $di->get('helper')->title()->get();
            $return->success = true;
 
            if ($view->bodyClass) {
                $return->bodyClass = $view->bodyClass;
            }
 
            $headers = $response->getHeaders()->toArray();
            if (isset($headers[404]) || isset($headers[503])) {
                $return->success = false;
            }
            $response->setContentType('application/json', 'UTF-8');
            $response->setContent(json_encode($return));
        } else {
            $response->setContent($view->getContent());
        }
 
        $response->sendHeaders();
 
        echo $response->getContent();
    }
 
    /**
     * @desc 处理异常,并结束脚本
     * @param $exception
     * @param $msg
     * @param $is_exit
     */
    private function exceptionExit( $exception, $msg, $is_exit = true )
    {
        $message = ( $exception ) ? $msg . $exception->getMessage() : $msg;
 
        $response = new Response();
        $response->setContent( $message . '<br>' );
        $response->send();
 
        if( $is_exit ) exit();
    }
 
    /**
     * 程序中断都会触发用此方法注册的函数
     */
    public function shutdown_handler()
    {
        if ( $this->running ) {
            //echo '<br>这是一个影响系统运行的严重错误!<br>';
            //error_log('这是一个影响系统运行的严重错误!');
            //exit();
        }
    }
 
    /**
     * @desc 捕获Warring错误
     * @param $error
     * @param $error_string
     * @param $filename
     * @param $line
     * @param $symbols
     **/
    public function displayErrorHandler( $error, $error_string, $filename, $line, $symbols )
    {
        /* 错误种类对应列表
        $error_no_arr = array(
            1       => 'ERROR',
            2       => 'WARNING',
            4       => 'PARSE',
            8       => 'NOTICE',
            16      => 'CORE_ERROR',
            32      => 'CORE_WARNING',
            64      => 'COMPILE_ERROR',
            128     => 'COMPILE_WARNING',
            256     => 'USER_ERROR',
            512     => 'USER_WARNING',
            1024    => 'USER_NOTICE',
            2047    => 'ALL',
            2048    => 'STRICT'
        ); */
 
        if( in_array( $error, array( 1, 2, 4 ) ) )
        {
            $msg = "<br>系统出现严重的错误,请联系系统管理员解决问题。<br>".$error_string."错误内容和错误发生文件名和行数,请检查ERROR的日志文件!<br>";
            $this->exceptionExit( null, $msg, false );
        }
    }
}
#3MookeCMS\Bootstrap->dispatch(Object(Phalcon\Di\FactoryDefault))
/var/www/html/app/Bootstrap.php (186)
<?php
 
namespace MookeCMS;
 
use Phalcon\Logger\Adapter\File as FileAdapter;
use Phalcon\Http\Response;
use Phalcon\Flash\Session;
use Phalcon\DI\FactoryDefault;
use Phalcon\Registry;
use Phalcon\Loader;
use Phalcon\Db\Adapter\Pdo\Mysql;
use Phalcon\Session\Adapter\Redis;
use Phalcon\Mvc\Url;
use Phalcon\Mvc\Application;
use Phalcon\Assets\Filters\Jsmin;
use Phalcon\Session\Adapter\Files;
 
use Application\Mvc\Helper;
use Application\Acl\DefaultAcl;
use Application\Assets\Manager;
use Application\Mvc\Router\DefaultRouter;
use Application\Assets\Filter\Less;
use System\Model\Configuration;
use Application\Mvc\Config;
 
use Phalcon\Mvc\Collection\Manager as MongodbManager;
 
/**
 * Bootstrap
 * @copyright Copyright (c) 2015 Markboo (http://cnski.cn)
 * @author Markboo <markboo@foxmail.com>
 */
class Bootstrap
{
    /**
     * 监控脚本运行用
    **/
    private $running;
 
    /**
    * 启动函数
    **/
    public function run()
    {
        //程序中断时会调用该函数注册的函数
        //register_shutdown_function( array( $this, 'shutdown_handler' ) );
        //打开错误信息
        //error_reporting( E_ERROR | E_WARNING | E_PARSE );
        //设置错误句柄
        //set_error_handler( array( $this, 'displayErrorHandler' ) );
 
        //开始监测是否程序中断
        $this->running = true;
 
        //创建di
        $di = new FactoryDefault();
 
        //载入配置
        require_once APPLICATION_PATH . '/modules/Application/Mvc/Config.php';
 
        $config = Config::get();
        $di->set( 'config', $config );
 
        //检查系统状态,各依赖关系是否可用
        $this->checkSystemStatus( $di );
 
        //创建注册器
        $registry = new Registry();
        $di->set('registry', $registry );
 
        //创建载入器
        $loader = new Loader();
        $loader->registerNamespaces( $config->loader->namespaces->toArray() );
 
        //通过配置文件注册目录
        $loader->registerDirs( [APPLICATION_PATH . "/plugins/"] );
        $loader->register();
 
        require_once APPLICATION_PATH . '/../vendor/autoload.php';
 
        try{
            //创建mysql数据库连接
            $db = new Mysql([
                "host"     => $config->database->host,
                "username" => $config->database->username,
                "password" => $config->database->password,
                "dbname"   => $config->database->dbname,
                "charset"  => $config->database->charset,
            ]);
            $di->set( 'db', $db );
 
        } catch ( \Exception $e ) {
            $this->exceptionExit( $e, 'MySQL数据库访问出错!<br>返回错误信息:' );
        }
 
        //设置mongo连接
        /*
        $di->set( 'mongo', function() use ($config) {
            $connStr= $config->mongodb->server .'/manage';
            $mongo = new \Mongo($connStr);
            $dbName = 'manage';
            return $mongo->$dbName;
        }, true);
        */
        $di->set(
            "mongo",
            function () use ($config) {
                $mongo = new \MongoClient(
                    $config->mongodb->server,array(
                        "db" => $config->mongodb->db,
//                        "username" => $config->mongodb->username,
//                        "password" => $config->mongodb->password
                    )
                );
                return $mongo->selectDB("manage");
            },
            true
        );
 
        //new MongoClient("mongodb://localhost:27017", array("username" => "joe", "password" => "test"));
 
        //设置collectionManager
        $di->set( 'collectionManager', function() {
            return new MongodbManager();
        });
 
        //初始化图
        $this->initView($di);
 
        //创建url
        $url = new Url();
        $url->setBasePath( $config->base_path );
        $url->setBaseUri( $config->base_path) ;
        $di->set( 'url', $url );
 
        //初始化缓存Cache
        $this->initCache($di);
 
        //读取CMS配置模块的配置
        $cmsModel = new Configuration();
        $registry->cms = $cmsModel->getConfig();
 
        //Application
        $application = new Application();
        $application->registerModules( $config->modules->toArray() );
 
        //事务管理器
        $this->initEventManager($di);
 
        //初始化Session
        $this->initSession($di);
 
        //初始化支付log记录
        try {
            $paylogger = new FileAdapter( APPLICATION_PATH . $config->work_path->pay_log_file );
            $di->set( 'paylogger', $paylogger );
        } catch ( \Exception $e ) {
            $this->exceptionExit( $e, '支付日志写入出错!<br>返回错误信息:' );
        }
 
        //JS Assets
        $this->initAssetsManager($di);
 
        //提示框标签
        $flash = new Session([
            'error'   => 'ui orange inverted flash segment',
            'success' => 'ui green inverted flash segment',
            'notice'  => 'ui blue inverted flash segment',
            'warning' => 'ui orange inverted flash segment',
        ]);
 
        $di->set( 'flash', $flash );
        $di->set( 'helper', new Helper() );
        $di->set( 'modules', function() use ($application) { return $application->getModules(); }, true );
 
        //载入访问控制策略
        $acl = new DefaultAcl();
        $di->set( 'acl', $acl );
 
        //初始化路由
        $this->initRouting($application, $di);
 
        $application->setDI($di);
 
        //主调度进程开始
        $this->dispatch($di);
 
        //结束监测是否程序中断
        $this->running = false;
    }
 
    /**
     * 检查系统状态,各依赖关系是否可用
     * @param $di
     * @return void
     */
    private function checkSystemStatus($di)
    {
        $config = $di->get('config');
 
        //创建mongodb数据库连接,检查
        try {
            $mongo = new \MongoClient( $config->mongodb->server, array(
                "db" => $config->mongodb->db//,
//                "username" => $config->mongodb->username,
//                "password" => $config->mongodb->password
            ));
        } catch ( \Exception $exception ) {
            $this->exceptionExit( $exception, 'MongoDB连接出现错误!' );
        }
 
        if ( !isset($config->work_path->pay_log_file) ) $this->exceptionExit( null, '环境配置中pay_log_file支付日志参数未设定!' );
        if ( !is_writeable( APPLICATION_PATH . $config->work_path->pay_log_file ) ) $this->exceptionExit( null, '支付日志文件不可写!' );
 
        if ( !isset($config->work_path->data_path) ) $this->exceptionExit( null, '环境配置中data_path数据目录志参数未设定!' );
        if ( !is_writeable( APPLICATION_PATH . $config->work_path->data_path ) ) $this->exceptionExit( null, 'data数据目录不可写!' );
 
        if ( !isset($config->work_path->qrcode_path) ) $this->exceptionExit( null, '环境配置中qrcode_path二维码存储目录参数未设定!' );
        if ( !is_writeable( APPLICATION_PATH . $config->work_path->qrcode_path ) ) $this->exceptionExit( null, 'public/static/payqrcode二维码存储目录不可写!' );
 
        if ( !isset($config->work_path->upload_file) ) $this->exceptionExit( null, '环境配置中upload_file上传图片目录参数未设定!' );
        if ( !is_writeable( APPLICATION_PATH . $config->work_path->upload_file ) ) $this->exceptionExit( null, 'public/static/files上传图片目录不可写!' );
    }
 
    /**
     * 初始化路由
     * @param $di
     * @return void
     */
    private function initRouting($application, $di)
    {
        $router = new DefaultRouter();
        $router->setDi($di);
        foreach ($application->getModules() as $module) {
            $routesClassName = str_replace('Module', 'Routes', $module['className']);
            if (class_exists($routesClassName)) {
                $routesClass = new $routesClassName();
                $router = $routesClass->init($router);
            }
            $initClassName = str_replace('Module', 'Init', $module['className']);
            if (class_exists($initClassName)) {
                new $initClassName();
            }
        }
        $di->set('router', $router);
    }
 
    /**
     * 初始化资源文件管理
     * @param $di
     * @return void
     **/
    private function initAssetsManager( $di )
    {
        $config = $di->get('config');
        $assetsManager = new Manager();
 
        $js_collection = $assetsManager->collection('js')
            ->setLocal(true)
            ->addFilter(new Jsmin())
            ->setTargetPath(ROOT . '/assets/js.js')
            ->setTargetUri('assets/js.js')
            ->join(true);
 
        if ($config->assets->js) {
            foreach ($config->assets->js as $js) {
                $js_collection->addJs(ROOT . '/' . $js);
            }
        }
 
        //Admin JS Assets
        $assetsManager->collection('modules-admin-js')
            ->setLocal(true)
            ->addFilter(new Jsmin())
            ->setTargetPath(ROOT . '/assets/modules-admin.js')
            ->setTargetUri('assets/modules-admin.js')
            ->join(true);
 
        //Admin LESS Assets
        $assetsManager->collection('modules-admin-less')
            ->setLocal(true)
            ->addFilter(new Less())
            ->setTargetPath(ROOT . '/assets/modules-admin.less')
            ->setTargetUri('assets/modules-admin.less')
            ->join(true)
            ->addCss(APPLICATION_PATH . '/modules/Admin/assets/admin.less');
 
        $di->set('assets', $assetsManager);
    }
 
    /**
     * 初始化事件管理器
     * @param $di
     * @return void
     **/
    private function initEventManager( $di )
    {
        $eventsManager = new \Phalcon\Events\Manager();
        $dispatcher = new \Phalcon\Mvc\Dispatcher();
 
        $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) use ($di) {
            new \MookeCMS\Plugin\CheckPoint($di->get('request'));
            new \MookeCMS\Plugin\Localization($dispatcher);
            new \MookeCMS\Plugin\AdminLocalization($di->get('config'));
            new \MookeCMS\Plugin\Acl($di->get('acl'), $dispatcher, $di->get('view'));
            new \MookeCMS\Plugin\MobileDetect($di->get('session'), $di->get('view'), $di->get('request'));
            new \MookeCMS\Plugin\Role($di->get('session'), $di->get('view'));
        });
 
        $eventsManager->attach("dispatch:afterDispatchLoop", function ($event, $dispatcher) use ($di) {
            new \MookeCMS\Plugin\Title($di);
        });
 
        //Profiler
        $registry = $di->get( 'registry' );
 
        if ($registry->cms['PROFILER']) {
            $profiler = new \Phalcon\Db\Profiler();
            $di->set('profiler', $profiler);
 
            $eventsManager->attach('db', function ($event, $db) use ($profiler) {
                if ($event->getType() == 'beforeQuery') {
                    $profiler->startProfile($db->getSQLStatement());
                }
                if ($event->getType() == 'afterQuery') {
                    $profiler->stopProfile();
                }
            });
        }
 
        $db = $di->get('db');
        $db->setEventsManager($eventsManager);
 
        $dispatcher->setEventsManager($eventsManager);
        $di->set('dispatcher', $dispatcher);
    }
 
    /**
     * 初始化视图引擎
     * @param $di
     * @return mixed $view
     **/
    private function initView( $di )
    {
        $view = new \Phalcon\Mvc\View();
 
        define('MAIN_VIEW_PATH', '../../../views/');
        $view->setMainView(MAIN_VIEW_PATH . 'main');
        $view->setLayoutsDir(MAIN_VIEW_PATH . '/layouts/');
        $view->setLayout('main');
        $view->setPartialsDir(MAIN_VIEW_PATH . '/partials/');
 
        //Volt
        $volt = new \Application\Mvc\View\Engine\Volt($view, $di);
        $volt->setOptions(['compiledPath' => APPLICATION_PATH . '/../data/cache/volt/']);
        $volt->initCompiler();
 
        $compiler = $volt->getCompiler();
        //加入md5过滤器,用在供货管理页面的时间验证上
        $compiler->addFilter('hash', 'md5');
 
        $compiler->addFunction(
            'contains_text',
            function ( $resolvedArgs, $exprArgs ) {
                return 'stripos(' . $resolvedArgs . ')';
            }
        );
 
        $compiler->addFunction(
            'number_format',
            function ( $resolvedArgs ) {
                return 'number_format(' . $resolvedArgs . ', 2 )';
            }
        );
 
        $compiler->addFunction(
            'number',
            function ( $resolvedArgs ) {
                return 'number_format(' . $resolvedArgs . ', 0 )';
            }
        );
        $compiler->addFunction('allow_check', function( $arg ) use ($di) {
            return 0;
        });
 
        $compiler->addFunction('replace_json', function( $arg ) {
            return 11;
        });
 
        $compiler->addFunction('mb_substr', 'mb_substr');
        $compiler->addFilter('mb_substr', 'mb_substr');
        $compiler->addFunction("dump", "print_r");
        $compiler->addFunction('in_array', 'in_array');
 
        $phtml = new \Phalcon\Mvc\View\Engine\Php($view, $di);
        $viewEngines = [
            ".volt"  => $volt,
            ".phtml" => $phtml,
        ];
 
        $view->registerEngines($viewEngines);
 
        $ajax = $di->get('request')->getQuery('_ajax');
        if ($ajax) {
            $view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_LAYOUT);
        }
 
        $di->set('view', $view);
 
        return $view;
    }
 
    /**
     * 初始化Session
     * @desc
     * @param $di
     */
    private function initSession( $di )
    {
        $config = $di->get('config');
 
        $session = null;
 
        switch ( $config->session ) {
            case 'redis':
                //初始化session并保存至redis里
                $session = new Redis([
                    "uniqueId" => $config->redis->uniqueid,
                    "host" => $config->redis->host,
                    "port" => $config->redis->port,
                    "lifetime" => $config->redis->lifetime,
                    "persistent" => $config->redis->persistent,
                    "prefix" => $config->redis->prefix
                ]);
                break;
            case 'file':
                //初始化session并保存至file里
                $session = new Files();
                break;
        }
 
        if( !$session ) {
            error_log( 'init session exception exit;' );
            $this->exceptionExit( null, $config->session.'初始化Session保存服务访问出错、Session保存位置检查异常!<br>返回错误信息:' );
        }
 
        try {
            $session->start();
        } catch ( \Exception $e ) {
            error_log( '--- session exception ---' );
            $this->exceptionExit( $e, $config->session.'初始化Session保存服务访问出错、Session启动异常<br>返回错误信息:' );
        }
 
        $di->set( 'session', $session );
    }
 
    /**
     * 初始化缓存,file类型、memcached类型
     * @param $di
     * @return void
     */
    private function initCache( $di )
    {
        $config = $di->get('config');
 
        $cacheFrontend = new \Phalcon\Cache\Frontend\Data([
            "lifetime" => 60,
            "prefix" => HOST_HASH,
        ]);
 
        $cache = null;
 
        switch ($config->cache) {
 
            case 'file':
                $cache = new \Phalcon\Cache\Backend\File($cacheFrontend, [
                    "cacheDir" => APPLICATION_PATH . "/../data/cache/backend/"
                ]);
                break;
 
            case 'memcache':
                $cache = new \Phalcon\Cache\Backend\Memcache(
                    $cacheFrontend, [
                    "host" => $config->memcache->host,
                    "port" => $config->memcache->port,
                ]);
                break;
 
            case 'mongodb':
                $cache = new \Phalcon\Cache\Backend\Mongo($cacheFrontend, [
                    'server'     => $config->mongodb->full_url, //$config->mongodb->server, //"mongodb://localhost:22222",
                    'db'         => $config->mongodb->db, //'caches',
                    'collection' => $config->mongodb->collection, //'images'
                ]);
                break;
 
        }
 
        $di->set('cache', $cache, true);
        $di->set('modelsCache', $cache, true);
 
        \Application\Widget\Proxy::$cache = $cache; // Modules Widget System
 
        $modelsMetadata = new \Phalcon\Mvc\Model\Metadata\Memory();
 
        $di->set('modelsMetadata', $modelsMetadata);
    }
 
    /**
     * 调度器管理
     * @param $di
     * @return void
     **/
    private function dispatch($di)
    {
        $router = $di['router'];
 
        $router->handle();
 
        $view = $di['view'];
 
        $dispatcher = $di['dispatcher'];
 
        $response = $di['response'];
 
        $dispatcher->setModuleName($router->getModuleName());
        $dispatcher->setControllerName($router->getControllerName());
        $dispatcher->setActionName($router->getActionName());
        $dispatcher->setParams($router->getParams());
 
        $moduleName = \Application\Utils\ModuleName::camelize($router->getModuleName());
 
        $ModuleClassName = $moduleName . '\Module';
        if (class_exists($ModuleClassName)) {
            $module = new $ModuleClassName;
            $module->registerAutoloaders();
            $module->registerServices($di);
        }
 
        $view->start();
 
        $registry = $di['registry'];
        if ($registry->cms['DEBUG_MODE']) {
            $debug = new \Phalcon\Debug();
            $debug->listen();
 
            $dispatcher->dispatch();
        } else {
            try {
                $dispatcher->dispatch();
            } catch (\Phalcon\Exception $e) {
                // Errors catching
 
                $view->setViewsDir(__DIR__ . '/modules/Index/views/');
                $view->setPartialsDir('');
                $view->e = $e;
 
                if ($e instanceof \Phalcon\Mvc\Dispatcher\Exception) {
                    $response->setHeader(404, 'Not Found');
                    $view->title = '错误页面';
                    $view->partial('error/error404');
                } else {
                    $response->setHeader(503, 'Service Unavailable');
                    $view->title = '错误页面';
                    $view->partial('error/error503');
                }
                $response->sendHeaders();
                echo $response->getContent();
                return;
 
            }
        }
 
        $view->render(
            $dispatcher->getControllerName(),
            $dispatcher->getActionName(),
            $dispatcher->getParams()
        );
 
        $view->finish();
 
        $response = $di['response'];
 
        //AJAX
        $request = $di['request'];
        $_ajax = $request->getQuery('_ajax');
 
        if ($_ajax) {
            $contents = $view->getContent();
 
            $return = new \stdClass();
            $return->html = $contents;
            $return->title = $di->get('helper')->title()->get();
            $return->success = true;
 
            if ($view->bodyClass) {
                $return->bodyClass = $view->bodyClass;
            }
 
            $headers = $response->getHeaders()->toArray();
            if (isset($headers[404]) || isset($headers[503])) {
                $return->success = false;
            }
            $response->setContentType('application/json', 'UTF-8');
            $response->setContent(json_encode($return));
        } else {
            $response->setContent($view->getContent());
        }
 
        $response->sendHeaders();
 
        echo $response->getContent();
    }
 
    /**
     * @desc 处理异常,并结束脚本
     * @param $exception
     * @param $msg
     * @param $is_exit
     */
    private function exceptionExit( $exception, $msg, $is_exit = true )
    {
        $message = ( $exception ) ? $msg . $exception->getMessage() : $msg;
 
        $response = new Response();
        $response->setContent( $message . '<br>' );
        $response->send();
 
        if( $is_exit ) exit();
    }
 
    /**
     * 程序中断都会触发用此方法注册的函数
     */
    public function shutdown_handler()
    {
        if ( $this->running ) {
            //echo '<br>这是一个影响系统运行的严重错误!<br>';
            //error_log('这是一个影响系统运行的严重错误!');
            //exit();
        }
    }
 
    /**
     * @desc 捕获Warring错误
     * @param $error
     * @param $error_string
     * @param $filename
     * @param $line
     * @param $symbols
     **/
    public function displayErrorHandler( $error, $error_string, $filename, $line, $symbols )
    {
        /* 错误种类对应列表
        $error_no_arr = array(
            1       => 'ERROR',
            2       => 'WARNING',
            4       => 'PARSE',
            8       => 'NOTICE',
            16      => 'CORE_ERROR',
            32      => 'CORE_WARNING',
            64      => 'COMPILE_ERROR',
            128     => 'COMPILE_WARNING',
            256     => 'USER_ERROR',
            512     => 'USER_WARNING',
            1024    => 'USER_NOTICE',
            2047    => 'ALL',
            2048    => 'STRICT'
        ); */
 
        if( in_array( $error, array( 1, 2, 4 ) ) )
        {
            $msg = "<br>系统出现严重的错误,请联系系统管理员解决问题。<br>".$error_string."错误内容和错误发生文件名和行数,请检查ERROR的日志文件!<br>";
            $this->exceptionExit( null, $msg, false );
        }
    }
}
#4MookeCMS\Bootstrap->run()
/var/www/html/public/index.php (20)
<?php
 
chdir(dirname(__DIR__));
 
define('ROOT', __DIR__);
define( 'PDF_HEADER_LOGO', '/var/www/html/public/static/res/mylogo.jpg' );
 
isset($_SERVER['HTTP_HOST']) ?
    define('HOST_HASH', substr(md5($_SERVER['HTTP_HOST']), 0, 12)) :
    define('HOST_HASH', substr(md5( 'erp.eqiyu.com' ), 0, 12));
 
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
 
define('APPLICATION_PATH', __DIR__ . '/../app');
 
require_once APPLICATION_PATH . '/Bootstrap.php';
 
$bootstrap = new MookeCMS\Bootstrap();
 
$bootstrap->run();
KeyValue
_url/aboutus.html
KeyValue
REDIRECT_REDIRECT_HTTPSon
REDIRECT_REDIRECT_SSL_TLS_SNIeqiyu.com
REDIRECT_REDIRECT_STATUS200
REDIRECT_APPLICATION_ENVproduction
REDIRECT_HTTPSon
REDIRECT_SSL_TLS_SNIeqiyu.com
REDIRECT_STATUS200
APPLICATION_ENVproduction
HTTPSon
SSL_TLS_SNIeqiyu.com
SSL_SERVER_S_DN_CNwww.eqiyu.com
SSL_SERVER_I_DN_CUS
SSL_SERVER_I_DN_ODigiCert Inc
SSL_SERVER_I_DN_OUwww.digicert.com
SSL_SERVER_I_DN_CNEncryption Everywhere DV TLS CA - G1
SSL_VERSION_INTERFACEmod_ssl/2.2.15
SSL_VERSION_LIBRARYOpenSSL/1.0.1e-fips
SSL_PROTOCOLTLSv1.2
SSL_SECURE_RENEGtrue
SSL_COMPRESS_METHODNULL
SSL_CIPHERECDHE-RSA-AES256-GCM-SHA384
SSL_CIPHER_EXPORTfalse
SSL_CIPHER_USEKEYSIZE256
SSL_CIPHER_ALGKEYSIZE256
SSL_CLIENT_VERIFYNONE
SSL_SERVER_M_VERSION3
SSL_SERVER_M_SERIAL09481C6606BE6E515862BD1E563045EF
SSL_SERVER_V_STARTAug 16 00:00:00 2022 GMT
SSL_SERVER_V_ENDAug 16 23:59:59 2023 GMT
SSL_SERVER_S_DN/CN=www.eqiyu.com
SSL_SERVER_I_DN/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=Encryption Everywhere DV TLS CA - G1
SSL_SERVER_A_KEYrsaEncryption
SSL_SERVER_A_SIGsha256WithRSAEncryption
SSL_SESSION_ID619D3CDB43FFC7EF6019E8422E3D1C38804963FE9FF6C06B0951CEBEC328B73C
HTTP_USER_AGENTCCBot/2.0 (https://commoncrawl.org/faq/)
HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGEen-US,en;q=0.5
HTTP_ACCEPT_ENCODINGbr,gzip
HTTP_HOSTeqiyu.com
HTTP_CONNECTIONKeep-Alive
PATH/sbin:/usr/sbin:/bin:/usr/bin
SERVER_SIGNATURE<address>Apache/2.2.15 (CentOS) Server at eqiyu.com Port 443</address>\n
SERVER_SOFTWAREApache/2.2.15 (CentOS)
SERVER_NAMEeqiyu.com
SERVER_ADDR10.170.213.241
SERVER_PORT443
REMOTE_ADDR18.232.127.73
DOCUMENT_ROOT/var/www/html
SERVER_ADMINadmin@eqiyu.com
SCRIPT_FILENAME/var/www/html/public/index.php
REMOTE_PORT40764
REDIRECT_QUERY_STRING_url=/aboutus.html
REDIRECT_URL/public/aboutus.html
GATEWAY_INTERFACECGI/1.1
SERVER_PROTOCOLHTTP/1.1
REQUEST_METHODGET
QUERY_STRING_url=/aboutus.html
REQUEST_URI/aboutus.html
SCRIPT_NAME/public/index.php
PHP_SELF/public/index.php
REQUEST_TIME_FLOAT1669541157.783
REQUEST_TIME1669541157
#Path
0/var/www/html/public/index.php
1/var/www/html/app/Bootstrap.php
2/var/www/html/app/modules/Application/Mvc/Config.php
3/var/www/html/app/config/environment/production.php
4/var/www/html/app/config/global.php
5/var/www/html/app/config/modules.php
6/var/www/html/app/modules/Application/Loader/Modules.php
7/var/www/html/vendor/autoload.php
8/var/www/html/vendor/composer/autoload_real.php
9/var/www/html/vendor/composer/ClassLoader.php
10/var/www/html/vendor/composer/autoload_static.php
11/var/www/html/vendor/guzzlehttp/promises/src/functions_include.php
12/var/www/html/vendor/guzzlehttp/promises/src/functions.php
13/var/www/html/vendor/guzzlehttp/psr7/src/functions_include.php
14/var/www/html/vendor/guzzlehttp/psr7/src/functions.php
15/var/www/html/vendor/guzzlehttp/guzzle/src/functions_include.php
16/var/www/html/vendor/guzzlehttp/guzzle/src/functions.php
17/var/www/html/vendor/adbario/php-dot-notation/src/helpers.php
18/var/www/html/vendor/symfony/polyfill-mbstring/bootstrap.php
19/var/www/html/vendor/markbaker/matrix/classes/src/Functions/adjoint.php
20/var/www/html/vendor/markbaker/matrix/classes/src/Functions/antidiagonal.php
21/var/www/html/vendor/markbaker/matrix/classes/src/Functions/cofactors.php
22/var/www/html/vendor/markbaker/matrix/classes/src/Functions/determinant.php
23/var/www/html/vendor/markbaker/matrix/classes/src/Functions/diagonal.php
24/var/www/html/vendor/markbaker/matrix/classes/src/Functions/identity.php
25/var/www/html/vendor/markbaker/matrix/classes/src/Functions/inverse.php
26/var/www/html/vendor/markbaker/matrix/classes/src/Functions/minors.php
27/var/www/html/vendor/markbaker/matrix/classes/src/Functions/trace.php
28/var/www/html/vendor/markbaker/matrix/classes/src/Functions/transpose.php
29/var/www/html/vendor/markbaker/matrix/classes/src/Operations/add.php
30/var/www/html/vendor/markbaker/matrix/classes/src/Operations/directsum.php
31/var/www/html/vendor/markbaker/matrix/classes/src/Operations/subtract.php
32/var/www/html/vendor/markbaker/matrix/classes/src/Operations/multiply.php
33/var/www/html/vendor/markbaker/matrix/classes/src/Operations/divideby.php
34/var/www/html/vendor/markbaker/matrix/classes/src/Operations/divideinto.php
35/var/www/html/vendor/markbaker/complex/classes/src/functions/abs.php
36/var/www/html/vendor/markbaker/complex/classes/src/functions/acos.php
37/var/www/html/vendor/markbaker/complex/classes/src/functions/acosh.php
38/var/www/html/vendor/markbaker/complex/classes/src/functions/acot.php
39/var/www/html/vendor/markbaker/complex/classes/src/functions/acoth.php
40/var/www/html/vendor/markbaker/complex/classes/src/functions/acsc.php
41/var/www/html/vendor/markbaker/complex/classes/src/functions/acsch.php
42/var/www/html/vendor/markbaker/complex/classes/src/functions/argument.php
43/var/www/html/vendor/markbaker/complex/classes/src/functions/asec.php
44/var/www/html/vendor/markbaker/complex/classes/src/functions/asech.php
45/var/www/html/vendor/markbaker/complex/classes/src/functions/asin.php
46/var/www/html/vendor/markbaker/complex/classes/src/functions/asinh.php
47/var/www/html/vendor/markbaker/complex/classes/src/functions/atan.php
48/var/www/html/vendor/markbaker/complex/classes/src/functions/atanh.php
49/var/www/html/vendor/markbaker/complex/classes/src/functions/conjugate.php
50/var/www/html/vendor/markbaker/complex/classes/src/functions/cos.php
51/var/www/html/vendor/markbaker/complex/classes/src/functions/cosh.php
52/var/www/html/vendor/markbaker/complex/classes/src/functions/cot.php
53/var/www/html/vendor/markbaker/complex/classes/src/functions/coth.php
54/var/www/html/vendor/markbaker/complex/classes/src/functions/csc.php
55/var/www/html/vendor/markbaker/complex/classes/src/functions/csch.php
56/var/www/html/vendor/markbaker/complex/classes/src/functions/exp.php
57/var/www/html/vendor/markbaker/complex/classes/src/functions/inverse.php
58/var/www/html/vendor/markbaker/complex/classes/src/functions/ln.php
59/var/www/html/vendor/markbaker/complex/classes/src/functions/log2.php
60/var/www/html/vendor/markbaker/complex/classes/src/functions/log10.php
61/var/www/html/vendor/markbaker/complex/classes/src/functions/negative.php
62/var/www/html/vendor/markbaker/complex/classes/src/functions/pow.php
63/var/www/html/vendor/markbaker/complex/classes/src/functions/rho.php
64/var/www/html/vendor/markbaker/complex/classes/src/functions/sec.php
65/var/www/html/vendor/markbaker/complex/classes/src/functions/sech.php
66/var/www/html/vendor/markbaker/complex/classes/src/functions/sin.php
67/var/www/html/vendor/markbaker/complex/classes/src/functions/sinh.php
68/var/www/html/vendor/markbaker/complex/classes/src/functions/sqrt.php
69/var/www/html/vendor/markbaker/complex/classes/src/functions/tan.php
70/var/www/html/vendor/markbaker/complex/classes/src/functions/tanh.php
71/var/www/html/vendor/markbaker/complex/classes/src/functions/theta.php
72/var/www/html/vendor/markbaker/complex/classes/src/operations/add.php
73/var/www/html/vendor/markbaker/complex/classes/src/operations/subtract.php
74/var/www/html/vendor/markbaker/complex/classes/src/operations/multiply.php
75/var/www/html/vendor/markbaker/complex/classes/src/operations/divideby.php
76/var/www/html/vendor/markbaker/complex/classes/src/operations/divideinto.php
77/var/www/html/app/modules/Application/Mvc/View/Engine/Volt.php
78/var/www/html/app/modules/Application/Widget/Proxy.php
79/var/www/html/app/modules/System/Model/Configuration.php
80/var/www/html/app/modules/Application/Assets/Manager.php
81/var/www/html/app/modules/Application/Assets/Filter/Less.php
82/var/www/html/app/modules/Application/Mvc/Helper.php
83/var/www/html/app/modules/Menu/Helper/Menu.php
84/var/www/html/app/modules/Application/Acl/DefaultAcl.php
85/var/www/html/app/modules/Managements/Model/Role.php
86/var/www/html/app/modules/Application/Mvc/Model/Model.php
87/var/www/html/app/modules/Application/Mvc/Modules.php
88/var/www/html/app/modules/Admin/Controller/AdminUserController.php
89/var/www/html/app/modules/Application/Mvc/Controller.php
90/var/www/html/app/modules/Admin/Controller/IndexController.php
91/var/www/html/app/modules/Analysis/Controller/ApiController.php
92/var/www/html/app/modules/Eshop/Controller/CartController.php
93/var/www/html/app/modules/Eshop/Controller/IndexController.php
94/var/www/html/app/modules/Goods/Controller/AdminController.php
95/var/www/html/app/modules/Goods/Controller/ApiController.php
96/var/www/html/app/modules/Goods/Controller/IndexController.php
97/var/www/html/app/modules/Index/Controller/BarcodeController.php
98/var/www/html/app/modules/Index/Controller/IndexController.php
99/var/www/html/app/modules/Import/Controller/ApiController.php
100/var/www/html/app/modules/Import/Controller/ExporterController.php
101/var/www/html/app/modules/Import/Controller/FeeController.php
102/var/www/html/app/modules/Import/Controller/LogisticsController.php
103/var/www/html/app/modules/Import/Controller/LogisticsGoodsController.php
104/var/www/html/app/modules/Import/Controller/NetworkController.php
105/var/www/html/app/modules/Import/Controller/NetworkCustomerController.php
106/var/www/html/app/modules/Import/Controller/NetworkCustomerFeeController.php
107/var/www/html/app/modules/Import/Controller/NetworkCustomerStaffController.php
108/var/www/html/app/modules/Import/Controller/NetworkSettlePriceController.php
109/var/www/html/app/modules/Import/Controller/PackageController.php
110/var/www/html/app/modules/Import/Controller/PrintController.php
111/var/www/html/app/modules/Import/Controller/ReviewNoticeController.php
112/var/www/html/app/modules/Import/Controller/StaffController.php
113/var/www/html/app/modules/Import/Controller/TransportController.php
114/var/www/html/app/modules/Managements/Controller/ApiController.php
115/var/www/html/app/modules/Managements/Controller/BranchController.php
116/var/www/html/app/modules/Managements/Controller/CompanyController.php
117/var/www/html/app/modules/Managements/Controller/RoleController.php
118/var/www/html/app/modules/Managements/Controller/StaffController.php
119/var/www/html/app/modules/Distribution/Controller/AgentController.php
120/var/www/html/app/modules/Distribution/Controller/ApiController.php
121/var/www/html/app/modules/Distribution/Controller/RetailerController.php
122/var/www/html/app/modules/Distribution/Controller/ShopController.php
123/var/www/html/app/modules/Mobile/Controller/AdminController.php
124/var/www/html/vendor/wechatdeveloper/include.php
125/var/www/html/app/modules/Mobile/Controller/ApiController.php
126/var/www/html/app/modules/Mobile/Controller/AuthController.php
127/var/www/html/app/modules/Mobile/Controller/AutomatController.php
128/var/www/html/app/modules/Mobile/Controller/BlockController.php
129/var/www/html/app/modules/Mobile/Controller/CommercialController.php
130/var/www/html/app/modules/Mobile/Controller/CommonController.php
131/var/www/html/app/modules/Mobile/Controller/IndexController.php
132/var/www/html/app/modules/Mobile/Controller/LogisticsController.php
133/var/www/html/app/modules/Mobile/Controller/MemberController.php
134/var/www/html/app/modules/Mobile/Controller/MessageController.php
135/var/www/html/app/modules/Mobile/Controller/NetworkerController.php
136/var/www/html/app/modules/Mobile/Controller/NewyearController.php
137/var/www/html/app/modules/Mobile/Controller/PaymentController.php
138/var/www/html/app/modules/Mobile/Controller/PostsController.php
139/var/www/html/app/modules/Mobile/Controller/RetailController.php
140/var/www/html/app/modules/Mobile/Controller/SdgsController.php
141/var/www/html/app/modules/Mobile/Controller/ShareController.php
142/var/www/html/app/modules/Mobile/Controller/ShopController.php
143/var/www/html/app/modules/Mobile/Controller/StationsController.php
144/var/www/html/app/modules/Mobile/Controller/SxbController.php
145/var/www/html/app/modules/Mobile/Controller/TestController.php
146/var/www/html/app/modules/Mobile/Controller/WechatController.php
147/var/www/html/app/modules/Mobile/Controller/WeixinworkController.php
148/var/www/html/app/modules/Open/Controller/ApiController.php
149/var/www/html/app/modules/Sales/Controller/ApiController.php
150/var/www/html/app/modules/Sales/Controller/BarcodeController.php
151/var/www/html/app/modules/Sales/Controller/CartController.php
152/var/www/html/app/modules/Sales/Controller/ImportController.php
153/var/www/html/app/modules/Sales/Controller/LogisticsProfitController.php
154/var/www/html/app/modules/Sales/Controller/OrderController.php
155/var/www/html/app/modules/Sales/Controller/SuborderController.php
156/var/www/html/app/modules/Purchase/Controller/AdminController.php
157/var/www/html/app/modules/Purchase/Controller/ApiController.php
158/var/www/html/app/modules/Purchase/Controller/GoodsPriceController.php
159/var/www/html/app/modules/Purchase/Controller/ManageController.php
160/var/www/html/app/modules/Purchase/Controller/RequestController.php
161/var/www/html/app/modules/Purchase/Controller/SupplierController.php
162/var/www/html/app/modules/Reports/Controller/AdminController.php
163/var/www/html/app/modules/Shipment/Controller/ExpectController.php
164/var/www/html/app/modules/Shipment/Controller/ExpressController.php
165/var/www/html/app/modules/Shipment/Controller/FeeController.php
166/var/www/html/app/modules/Shipment/Controller/RegionController.php
167/var/www/html/app/modules/Shipment/Controller/RotasController.php
168/var/www/html/app/modules/Shipment/Controller/TransportController.php
169/var/www/html/app/modules/Shipment/Controller/VehicleController.php
170/var/www/html/app/modules/Shop/Controller/ApiController.php
171/var/www/html/app/modules/Shop/Controller/ClientController.php
172/var/www/html/app/modules/Shop/Controller/CustomerController.php
173/var/www/html/app/modules/Shop/Controller/CustomerLevelController.php
174/var/www/html/app/modules/Shop/Controller/MembershipController.php
175/var/www/html/app/modules/Shop/Controller/ShopShareGoodsController.php
176/var/www/html/app/modules/Stock/Controller/ApiController.php
177/var/www/html/app/modules/Stock/Controller/ArrivalController.php
178/var/www/html/app/modules/Stock/Controller/DeliveryController.php
179/var/www/html/app/modules/Stock/Controller/DispatchBillController.php
180/var/www/html/app/modules/Stock/Controller/DropShippingController.php
181/var/www/html/app/modules/Stock/Controller/EntryController.php
182/var/www/html/app/modules/Stock/Controller/ImportController.php
183/var/www/html/app/modules/Stock/Controller/InventoryController.php
184/var/www/html/app/modules/Stock/Controller/PositionController.php
185/var/www/html/app/modules/Stock/Controller/TakeController.php
186/var/www/html/app/modules/Stock/Controller/TransferController.php
187/var/www/html/app/modules/Stock/Controller/UserController.php
188/var/www/html/app/modules/Stock/Controller/WarehouseController.php
189/var/www/html/app/modules/Stock/Controller/WarningController.php
190/var/www/html/app/modules/Weixin/Controller/IndexController.php
191/var/www/html/app/modules/Content/Controller/SmallappController.php
192/var/www/html/app/modules/Content/Controller/WeixinController.php
193/var/www/html/app/modules/Finance/Controller/AccountController.php
194/var/www/html/app/modules/Finance/Controller/CashoutlistController.php
195/var/www/html/app/modules/Finance/Controller/ClearingformController.php
196/var/www/html/app/modules/Finance/Controller/CollectionAccountController.php
197/var/www/html/app/modules/Finance/Controller/CreditController.php
198/var/www/html/app/modules/Finance/Controller/CurrencyController.php
199/var/www/html/app/modules/Finance/Controller/DaybookController.php
200/var/www/html/app/modules/Finance/Controller/EnchashmentController.php
201/var/www/html/app/modules/Finance/Controller/FreightController.php
202/var/www/html/app/modules/Finance/Controller/HistoryController.php
203/var/www/html/app/modules/Finance/Controller/IncomeController.php
204/var/www/html/app/modules/Finance/Controller/PayableController.php
205/var/www/html/app/modules/Finance/Controller/PaybackController.php
206/var/www/html/app/modules/Finance/Controller/PaymoneyController.php
207/var/www/html/app/modules/Finance/Controller/ReceiptController.php
208/var/www/html/app/modules/Finance/Controller/ReceivableController.php
209/var/www/html/app/modules/Finance/Controller/ShophistoryController.php
210/var/www/html/app/modules/Finance/Controller/SuppliercashoutController.php
211/var/www/html/app/modules/Finance/Controller/SupplierhistoryController.php
212/var/www/html/app/modules/Aftersale/Controller/AgencyController.php
213/var/www/html/app/modules/Aftersale/Controller/AgencyclaimController.php
214/var/www/html/app/modules/Aftersale/Controller/CheckinController.php
215/var/www/html/app/modules/Aftersale/Controller/ClaimController.php
216/var/www/html/app/modules/Aftersale/Controller/FactoryController.php
217/var/www/html/app/modules/Aftersale/Controller/GoodsController.php
218/var/www/html/app/modules/Aftersale/Controller/IdentifyController.php
219/var/www/html/app/modules/Aftersale/Controller/OrderController.php
220/var/www/html/app/modules/Aftersale/Controller/PaybackController.php
221/var/www/html/app/modules/Aftersale/Controller/RefundsController.php
222/var/www/html/app/modules/Aftersale/Controller/ReturnsController.php
223/var/www/html/app/modules/Aftersale/Controller/SymptomController.php
224/var/www/html/app/modules/Setting/Controller/AddressController.php
225/var/www/html/app/modules/Setting/Controller/ApiController.php
226/var/www/html/app/modules/Setting/Controller/BaseGoodsController.php
227/var/www/html/app/modules/Setting/Controller/BrandController.php
228/var/www/html/app/modules/Setting/Controller/CategoryController.php
229/var/www/html/app/modules/Setting/Controller/CountryController.php
230/var/www/html/app/modules/Setting/Controller/CurrencyController.php
231/var/www/html/app/modules/Setting/Controller/JobController.php
232/var/www/html/app/modules/Setting/Controller/PackController.php
233/var/www/html/app/modules/Setting/Controller/PaymentController.php
234/var/www/html/app/modules/Setting/Controller/SystemGoodsController.php
235/var/www/html/app/modules/Setting/Controller/TariffController.php
236/var/www/html/app/modules/Setting/Controller/UnitsController.php
237/var/www/html/app/modules/Operation/Controller/ApiController.php
238/var/www/html/app/modules/Operation/Controller/DominoController.php
239/var/www/html/app/modules/Operation/Controller/GoodsCollectionController.php
240/var/www/html/app/modules/Operation/Controller/PriceReviewController.php
241/var/www/html/app/modules/Operation/Controller/PromotionController.php
242/var/www/html/app/modules/Operation/Controller/ShareController.php
243/var/www/html/app/modules/Operation/Controller/ShopGoodsController.php
244/var/www/html/app/modules/Operation/Controller/SpuController.php
245/var/www/html/app/modules/System/Controller/ApiController.php
246/var/www/html/app/modules/System/Controller/ConfigurationController.php
247/var/www/html/app/modules/System/Controller/FilesController.php
248/var/www/html/app/modules/System/Controller/LanguageController.php
249/var/www/html/app/modules/System/Controller/MessageController.php
250/var/www/html/app/modules/System/Controller/MissionController.php
251/var/www/html/app/modules/System/Controller/TranslateController.php
252/var/www/html/app/modules/Platform/Controller/AlibabaController.php
253/var/www/html/app/modules/Platform/Controller/JingdongController.php
254/var/www/html/app/modules/Platform/Controller/PinduoduoController.php
255/var/www/html/app/modules/Platform/Controller/TaobaoController.php
256/var/www/html/app/modules/Platform/Controller/ToutiaoController.php
257/var/www/html/app/modules/Platform/Controller/VipshopController.php
258/var/www/html/app/modules/Automat/Controller/ApiController.php
259/var/www/html/app/modules/Automat/Controller/DeviceController.php
260/var/www/html/app/modules/Automat/Controller/IndexController.php
261/var/www/html/app/modules/Automat/Controller/ManagerController.php
262/var/www/html/app/modules/Automat/Controller/OrdersController.php
263/var/www/html/app/modules/Automat/Controller/SiteController.php
264/var/www/html/app/modules/Automat/Controller/StaffController.php
265/var/www/html/app/modules/Automat/Controller/StockController.php
266/var/www/html/app/modules/Automat/Controller/TaskController.php
267/var/www/html/app/modules/Support/Controller/ActivityController.php
268/var/www/html/app/modules/Support/Controller/ApiController.php
269/var/www/html/app/modules/Support/Controller/IndexController.php
270/var/www/html/app/modules/Support/Controller/OrdersController.php
271/var/www/html/app/modules/Support/Controller/ShopsController.php
272/var/www/html/app/modules/Support/Controller/StaffController.php
273/var/www/html/app/modules/Support/Controller/StockController.php
274/var/www/html/app/modules/Support/Controller/SuixinbaoController.php
275/var/www/html/app/config/allow.php
276/var/www/html/app/config/deny.php
277/var/www/html/app/modules/Application/Mvc/Router/DefaultRouter.php
278/var/www/html/app/modules/Admin/Routes.php
279/var/www/html/app/modules/Analysis/Routes.php
280/var/www/html/app/modules/Eshop/Routes.php
281/var/www/html/app/modules/Goods/Routes.php
282/var/www/html/app/modules/Application/Mvc/Helper/CmsCache.php
283/var/www/html/app/modules/Index/Routes.php
284/var/www/html/app/modules/Import/Routes.php
285/var/www/html/app/modules/Managements/Routes.php
286/var/www/html/app/modules/Distribution/Routes.php
287/var/www/html/app/modules/Mobile/Routes.php
288/var/www/html/app/modules/Open/Routes.php
289/var/www/html/app/modules/Sales/Routes.php
290/var/www/html/app/modules/Purchase/Routes.php
291/var/www/html/app/modules/Reports/Routes.php
292/var/www/html/app/modules/Shipment/Routes.php
293/var/www/html/app/modules/Shop/Routes.php
294/var/www/html/app/modules/Stock/Routes.php
295/var/www/html/app/modules/Weixin/Routes.php
296/var/www/html/app/modules/Content/Routes.php
297/var/www/html/app/modules/Third/Routes.php
298/var/www/html/app/modules/Finance/Routes.php
299/var/www/html/app/modules/Aftersale/Routes.php
300/var/www/html/app/modules/Setting/Routes.php
301/var/www/html/app/modules/Operation/Routes.php
302/var/www/html/app/modules/System/Routes.php
303/var/www/html/app/modules/Platform/Routes.php
304/var/www/html/app/modules/Automat/Routes.php
305/var/www/html/app/modules/Support/Routes.php
306/var/www/html/app/modules/Application/Utils/ModuleName.php
307/var/www/html/app/modules/Index/Module.php
308/var/www/html/app/plugins/CheckPoint.php
309/var/www/html/app/plugins/Localization.php
310/var/www/html/app/modules/System/Model/Translate.php
311/var/www/html/app/plugins/AdminLocalization.php
312/var/www/html/data/translations/admin/cn.php
313/var/www/html/app/plugins/Acl.php
314/var/www/html/app/plugins/MobileDetect.php
315/var/www/html/vendor/mobiledetect/mobiledetectlib/Mobile_Detect.php
316/var/www/html/app/plugins/Role.php
Memory
Usage7602176