1

你好好人!

我有一个基于 Zend Framework 1.11.12(从 1.10.8 升级)使用“模块化方法”文件夹结构的 Web 应用程序(我的第一个此类),我的意思是所有模块都在application/modules. 我使用了 Doctrine 1.2.4

我还library为所有第三方库使用文件夹,包括 ZF,除了 2:CKEditorPGRFilemanager. pgrfile 管理器,用于从管理面板将文件上传到图像文件夹。这是全局我的文件结构。

/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异常之类的问题。我最初认为这是由于我没有使用的事实,但显然我是因为这里解释了这个事实 (如果我错了,请纠正我谢谢) session_start()~~/auth.phpZend_Session

如何使用它?谢谢阅读

4

1 回答 1

1

由于我找到了有关此问题的解决方法,因此我想我会分享,也许我会获得更好的视角。

答案Class __PHP_Incomplete_Class has no unserializer Array现在很清楚了,因为 Session 知道哪种格式unserialize意味着 php 必须知道存储在会话中的对象的定义。

基于文件结构,我创建了一个身份验证文件myauth.php,说/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.phppgr/php/files.php我包括

$path = realpath("../../../../library");
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

在顶部。然后我包括pgr/userfiles/myauth.phppgr/myconfig如下所示

include_once dirname(__FILE__) . '/userfiles/myauth.php';

我希望这会对某人有所帮助。谢谢

于 2012-08-21T07:03:35.487 回答