Привет, хорошие люди!
У меня есть веб-приложение (мое первое из этого типа) на основе Zend Framework 1.11.12 (обновлено с 1.10.8) с использованием структуры папок «модульного подхода», я имею в виду, что все модули находятся под application/modules
. Я использовал Doctrine 1.2.4
Я также использую library
папку для всех сторонних библиотек, включая ZF, кроме 2: CKEditor
и PGRFilemanager
. pgrfile manager для загрузки файлов в папку изображений с панели администратора. здесь есть глобальная файловая структура.
/application /configs application.ini routes.ini /layouts /scripts /partials *.all_the_partials_files.phtml *.all_the_layouts.phtml /modules all_the_module_folders Boostrap.php /logs /library /Zend /Doctrine /SwiftMailer /Abra //where all my classes reside /Model User.php Role.php other_doctrine_entities_class /public /javascript /css /images .htaccess // added an htaccess file here /fonts `/ckeditor` a_lot_of_files_including_php_files other_folders /plugins other_folders `/pgrfilemanager` /php auth.php myconfig.php other_folders_and_files_including_php index.php .htaccess
В момент, когда я разрабатывал этот сайт, я не использовал Zend_Acl, поэтому session_start () в /public/ckeditor/plugins/pgrfilemanager/php/auth.php
работал нормально в течение некоторого времени, поскольку pgrfilemanager пришел с функцией проверки подлинности по умолчанию. но как только я начал использовать Zend_Acl, я столкнулся с такими проблемами, как Class __PHP_Incomplete_Class has no unserializer Array
исключения Class __PHP_Incomplete_Class has no unserializer Array
когда session_start()
вызывается из файла ~~/auth.php
. Первоначально я думал, что это связано с тем, что я не использовал Zend_Session
но, видимо, я был скорее из-за этого объясненного здесь факта (исправьте меня, если я ошибаюсь)
Как это использовать? Спасибо за прочтение
Поскольку я нашел обходной путь об этой проблеме, я думал, что буду делиться, возможно, я получу лучшую перспективу.
В ответе для Class __PHP_Incomplete_Class has no unserializer Array
становится ясным, поскольку сеанс делает то, какой формат для unserialize
to значение php должен был знать определение объекта, хранящегося в сеансе.
Основываясь на структуре файла, я создал файл auth, скажем, myauth.php
in /public/ckeditor/puglins/pgrfilemanager/userfiles
Я буду ссылаться на этот путь: pgr/userdir
$path = realpath("../../../../library"); set_include_path(get_include_path() . PATH_SEPARATOR . $path); require "Zend/Loader/Autoloader.php"; require_once 'Doctrine/Doctrine.php'; spl_autoload_register(array("Doctrine", "autoload"), true); $loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace(array("Abra_")); /*$p seem to be empty throwing error on Zend_Config_Ini but returns the config anyway.I never figured out */ $p = realpath("./../../../../application/configs/application.ini"); try { // $config = parse_ini_file($p, "production"); $config = new Zend_Config_Ini($p, "production"); $conn = Doctrine_Manager::connection($config->doctrine->dsn); $user = new Abra_Model_User(); $role = new Abra_Model_Role(); $auth = Zend_Auth::getInstance(); if(!$auth->hasIdentity()|| !in_array($auth->getIdentity()->Role->name, array("superadmin","administrator")) ){ die("Not authenticated"); } } catch (Exception $ex) { */ $p = realpath("./../../../../application/configs/application.ini"); try { // $config = parse_ini_file($p, "production"); $config = new Zend_Config_Ini($p, "production"); $conn = Doctrine_Manager::connection($config->doctrine->dsn); $user = new Abra_Model_User(); $role = new Abra_Model_Role(); $auth = Zend_Auth::getInstance(); if(!$auth->hasIdentity()|| !in_array($auth->getIdentity()->Role->name, array("superadmin","administrator")) ){ die("Not authenticated"); } } catch (Exception $ex) { } }
в pgr/php/folders.php
и pgr/php/files.php
я включил
$path = realpath("../../../../library"); set_include_path(get_include_path() . PATH_SEPARATOR . $path);
на вершине. то я включил pgr/userfiles/myauth.php
в pgr/myconfig
как показано ниже
include_once dirname(__FILE__) . '/userfiles/myauth.php';
Надеюсь, это поможет кому-то. благодаря