and now with improved regex:
//pluginloader.php line 374
           foreach ($paths as $key => $path) {
if (preg_match('/^[a-z0-9_](?!(:\/))(?!:' . preg_quote('\\') . ')/i', $path)) {//works for windows paths too, like E:\myapp\etc
                   foreach ($incPaths as $index => $incPath) {
                       $incPaths[$index] .= DIRECTORY_SEPARATOR . $path;
                   }
                   unset($paths[$key]);
               }
           }

Bart

Bart McLeod schreef:
Think I found it (at least a quick fix that works, but you will probably have to fix the regex and add an else statement:
//line 374 in pluginloader.php
            foreach ($paths as $key => $path) {
if (preg_match('/^[a-z0-9_](?!:' . preg_quote('\\') . ')/i', $path)) {
                    foreach ($incPaths as $index => $incPath) {
                        $incPaths[$index] .= DIRECTORY_SEPARATOR . $path;
                    }
//unset($paths[$key]);//I commented this line to keep the paths that I have set for specific keys that go wrong, provides a quick fix
                }
            }

Bart

Matthew Weier O'Phinney schreef:
-- Bart McLeod <[EMAIL PROTECTED]> wrote
(on Wednesday, 08 October 2008, 12:10 PM +0200):
This is what I get with 11666:
Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with
message 'Plugin by name CmsScripts was not found in the registry; paths
searched: array ( 'Admin_View_Helper_' => array ( 0 => 'D:/werkmap/
www.houthandelwijers.nl zf/application/admin/views\\helpers/', ),
'Zend_View_Helper_' => array ( 0 => 'Zend/View/Helper/', ), ) Original
include_path: .;C:\Program Files\PHP\pear;c:\php\includes;c:\php\PEAR\;c:\php;
D:\ZendFramework\library' in D:\ZendFramework\library\Zend\Loader\
PluginLoader.php:404 Stack trace: #0 D:\ZendFramework\library\Zend\View\
Abstract.php(1114): Zend_Loader_PluginLoader->load('CmsScripts') #1 D:\
ZendFramework\library\Zend\View\Abstract.php(545): Zend_View_Abstract->
_getPlugin('helper', 'cmsScripts') #2 D:\ZendFramework\library\Zend\View\
Abstract.php(312): Zend_View_Abstract->getHelper('cmsScripts') #3 [internal
function]: Zend_View_Abstract->__call('cmsScripts', Array) #4 D:\ZendFramework\
library\SpaceCMS\ActionController.php(44): Zend_View->cmsScripts() #5 D:\ZendFr
in D:\ZendFramework\library\Zend\Loader\PluginLoader.php on line 404

So I'll just revert back to 10753 for now! :-)

Okay, so it's still an issue on Windows, then. I'll keep digging.


Matthew Weier O'Phinney schreef:

    -- Bart McLeod <[EMAIL PROTECTED]> wrote
    (on Wednesday, 08 October 2008, 11:17 AM +0200):


        I updated the Loader dir to 10753 and it works again now. Revision 
11629 is the
        one that broke it.



    That makes sense -- I made changes as of r11666 that should have fixed
    it.




        Matthew Weier O'Phinney schreef:

            -- Bart McLeod <[EMAIL PROTECTED]> wrote
            (on Monday, 06 October 2008, 09:10 PM +0200):


                Hi all,

                I had similar problems today with my custom view helpers. They 
are in
                the location where ZF is looking for them, but it can't load 
them. I
                thought I sent a mail to the list about it, but it probably got 
rejected.

                The only thing I could think of is the directory separator... I 
can see
                you are on windows too. In my case, everything worked before 
and now
                nothing does, because the helpers aren't found by the plugin 
loader.



            I'm pretty certain it's an OS-dependent bug, and will be working 
when I
            can to fix this the next few days.




                The loader works by adding to the include path the directories 
required...

                Bart

                Codiac schreef:


                    Matthew,

                    It's probably my setup but I'm still experiencing problems. 
I'm not using
                    the incubator and I'm trying to load the 
Zend_View_Helper_Translate. It
                    works fine for the login page, but after that it somehow 
goes wrong. Here's
                    a little more info.

                    #0 C:\Documents and Settings\Mijn 
documenten\Projecten\Workspace\Zend
                    Framework (Core)\library\Zend\View\Abstract.php(1114):
                    Zend_Loader_PluginLoader-&gt;load('Translate')
                    #1 C:\Documents and Settings\Mijn 
documenten\Projecten\Workspace\Zend
                    Framework (Core)\library\Zend\View\Abstract.php(545):
                    Zend_View_Abstract-&gt;_getPlugin('helper', 'translate')
                    #2 C:\Documents and Settings\Mijn 
documenten\Projecten\Workspace\Zend
                    Framework (Core)\library\Zend\View\Abstract.php(312):
                    Zend_View_Abstract-&gt;getHelper('translate')
                    #3 [internal function]: 
Zend_View_Abstract-&gt;__call('translate', Array)
                    #4 C:\Documents and Settings\Mijn 
documenten\Projecten\Workspace\D
                    Wms\d_wms\default\views\scripts\index\index.php(3):
                    Zend_View-&gt;translate('INDEX_PAGE_001')

                    Regards, TJ.



                    Matthew Weier O'Phinney-3 wrote:



                        -- Matthew Weier O'Phinney <[EMAIL PROTECTED]> wrote
                        (on Sunday, 05 October 2008, 11:45 AM -0400):



                            -- Matthew Weier O'Phinney <[EMAIL PROTECTED]> wrote
                            (on Sunday, 05 October 2008, 11:27 AM -0400):



                                -- Codiac <[EMAIL PROTECTED]> wrote
                                (on Sunday, 05 October 2008, 02:25 AM -0700):



                                    I'm experiencing some errors while loading 
a plugin (in this case the
                                    translate view helper). I'm seeing what 
appears to be escaped




                            directory



                                    separators in the include path. Is this 
somehow related to the




                            changes in



                                    Zend_Loader_PluginLoader how it handles 
plugin loading? Here are the
                                    details:

                                    Fatal error: Uncaught exception 
'Zend_Loader_PluginLoader_Exception'




                            with



                                    message 'Plugin by name Translate was not 
found in the registry;




                            paths



                                    searched: array ( 'D_View_Helper_' => array ( 
0 =>
                                    'C:\\Documents and




                            Settings\\Mijn



                                    
documenten\\Projecten\\Workspace\\Wms\\wms\\views\\helpers/', ),
                                    'Zend_View_Helper_' => array ( 0 => 
'Zend/View/Helper/', 1 =>




                            'C:/Documents



                                    and Settings/Mijn
                                    
documenten/Projecten/Workspace/Wms/wms/default/views\\helpers/',
                                    ), )



                                The escapes above are because I use var_export 
to create the message --
                                which will escape backslashes in strings so 
they may be evaluated
                                properly by PHP. So, that's not the issue.

                                I've just verified problems loading the 
translate view helper when I
                                have a custom helper path in place, so I'll 
continue looking for the
                                source of the issue.




                            Actually, I take that back -- the helper was found. 
However, because I
                            had display_errors on, I was distracted by the 
warnings. Now I need to
                            find out why the warning errors are showing since 
they should be
                            suppressed.




                        Issue was that the version of the incubator was 
conflicting with the one
                        in trunk. I've now removed the incubator version, and 
I'm no longer
                        seeing the warnings. Please update and verify.




                                    Original include_path:

                                    .;C:\xampp\php\pear\;C:\Documents and 
Settings\Mijn
                                    documenten\Projecten\Workspace\Zend 
Framework (Core)\library\;

                                    C:\Documents and Settings\Mijn
                                    
documenten\Projecten\Workspace\Framework\library' in C:\Documents and
                                    Settings\Mijn 
documenten\Projecten\Workspace\Zend Framework
                                    
(Core)\library\Zend\Loader\PluginLoader.php:404

                                    Stack trace:

                                    #0 C:\Documents and Settings\Taco\Mijn




                            documenten\Projecten\Workspace\Zend



                                    Framework (Core)\library\Zend\View\Abstr in 
C:\Documents and
                                    Settings\Taco\Mijn 
documenten\Projecten\Workspace\Zend Framework
                                    (Core)\library\Zend\Loader\PluginLoader.php 
on line 404

                                    Thanks,
                                    TJ.



                                    Matthew Weier O'Phinney-3 wrote:



                                        -- Pieter Kokx <[EMAIL PROTECTED]> wrote
                                        (on Saturday, 04 October 2008, 11:12 PM 
+0200):



                                            Since revision 11629 there are some 
problems with the PluginLoader




                            This



                                            is because there were some 
performance tweaks. Since that




                            revision, it



                                            is that when you are calling the 
Zend_Loader_PluginLoader::load()
                                            method, it uses the 
Zend_Loader::loadFile() method in stead of




                            just



                                            using require_once. The problem 
with that is that the
                                            Zend_Loader::loadFile() method is 
adding the given directories to




                            the



                                            include path and removing them 
after the include operation. But




                            when you



                                            have a relative path that depends 
on the include path, it won't




                            work



                                            (then you are adding something like 
Zend/View/Helper/ to the




                            include



                                            path). So it doesn't work anymore.

                                            How can we make this work well 
again?




                                        Pieter, please update to current svn. 
Since 11666, committed last




                            night,



                                        things are now working fine. I 
identified the issue, and have




                            resolved



                                        it (while keeping the performance 
improvement).




                                            Well, just make that the 
PluginLoader doesn't use the
                                            Zend_Loader::loadFile() method and 
uses its old method with
                                            require_once. Or we should change 
Zend_Loader::loadFile() so it




                            will use



                                            the directories correctly and make 
that that directories can be in




                            the



                                            include path. Currently we are 
making a big API break. Even




                            Zend_View



                                            doesn't work with helpers or 
filters anymore without re-adding the




                            path



                                            manualy.

                                            Does anybody else have some other 
ideas to solve this?




                                        --
                                        Matthew Weier O'Phinney
                                        Software Architect       | [EMAIL 
PROTECTED]
                                        Zend Framework           | 
http://framework.zend.com/






                                    --
                                    View this message in context:




                            
http://www.nabble.com/Zend_Loader_PluginLoader-problems-tp19817529p19822598.html



                                    Sent from the Zend Framework mailing list 
archive at Nabble.com.





                                --
                                Matthew Weier O'Phinney
                                Software Architect       | [EMAIL PROTECTED]
                                Zend Framework           | 
http://framework.zend.com/





                            --
                            Matthew Weier O'Phinney
                            Software Architect       | [EMAIL PROTECTED]
                            Zend Framework           | 
http://framework.zend.com/





                        --
                        Matthew Weier O'Phinney
                        Software Architect       | [EMAIL PROTECTED]
                        Zend Framework           | http://framework.zend.com/




















Reply via email to