[Solar-talk] Error with Solar 0.28 and Text_Wiki 0.1.0
Andreas Ravnestad
andreas.ravnestad at gmail.com
Sun Aug 26 18:09:19 CDT 2007
Paul M Jones wrote:
>
> On Aug 26, 2007, at 10:08 AM, Andreas Ravnestad wrote:
>
>> Paul M Jones wrote:
>>> On Aug 26, 2007, at 9:52 AM, Andreas Ravnestad wrote:
>>>
>>>> Rodrigo Moraes wrote:
>>>>> On 8/22/07, Andreas Ravnestad wrote:
>>>>>
>>>>>> Now, Solar is looking for a file "Text\Wiki\Parse\Prefilter.php"
>>>>>> which
>>>>>> doesn't exist. However, there is a class named
>>>>>> Text_Wiki_Parse_Prefilter, but it resides in
>>>>>> "Text\Wiki\Parse\Default\Prefilter.php" (difference being the
>>>>>> Default
>>>>>> folder). As far as I can tell, this used to work with Solar 0.27.
>>>>>> Any
>>>>>> ideas how to fix?
>>>>>>
>>>>
>>>> This problem is still persistent and is plaguing one of my
>>>> production servers. I currently must choose between downgrading to
>>>> solar 0.27 (and rolling back *alot* of code), and displaying flat
>>>> wiki text (no formatting). Paul, it would be really nice if you
>>>> could take a look at this -- I will be very happy to help out in
>>>> any way I can!
>>>
>>> Will do so today -- need to install Text_Wiki and the MediaWiki
>>> parse/render set, yes?
>>>
>>
>> Great! Yes, those are the packages I am using :) You are likely to
>> see that a test case will work fine in "vanilla" PHP (no Solar), but
>> will fail with the error detailed earlier when running a test case on
>> top of Solar.
>
> Test code is this:
>
> <?php
> error_reporting(E_ALL|E_STRICT);
> ini_set('display_errors', true);
> set_include_path('/path/to/pear');
>
> // include 'Solar.php';
>
> include 'Text/Wiki/Mediawiki.php';
>
> $wiki = new Text_Wiki_Mediawiki();
> $text = "\n== Title ==\n\nHi there!\n";
> $html = $wiki->transform($text);
>
> var_dump($html);
>
> It works (albeit with lots of E_STRICT notices) when you set the path
> to PEAR and leave the Solar include line commented out. The text is
> converted to HTML with H2 and a paragraph markup.
>
>
> The Problem
> -----------
>
> The code fails when you un-comment the Solar include line, throwing
> this exception:
>
> Fatal error: Uncaught exception 'Solar_Exception_FileNotReadable'
> class::code 'Solar::ERR_FILE_NOT_READABLE'
> with message 'File does not exist or is not readable'
> information array (
> 'file' => 'Text/Wiki/Parse/Prefilter.php',
> )
> Stack trace:
> #0 /Users/pmjones/Sites/dev/solar/trunk/Solar.php(895):
> Solar::factory('Solar_Exception...', Array)
> #1 /Users/pmjones/Sites/dev/solar/trunk/Solar.php(481):
> Solar::exception('Solar', 'ERR_FILE_NOT_RE...', 'File does
> not e...', Array)
> #2 /Users/pmjones/Sites/dev/solar/trunk/Solar.php(397):
> Solar::run('Text/Wiki/Parse...')
> #3 [internal function]: Solar::loadClass('Text_Wiki_Parse...')
> #4 [internal function]: spl_autoload_call('Text_Wiki_Parse...')
> #5 /Users/pmjones/pear/php/Text/Wiki.php(1317):
> class_exists('Text_Wiki_Parse...')
> #6 /Users/pmjones/pear/php/Text/Wiki.php(952):
> Text_Wiki->loadParseObj('Prefilter')
> #7 /Users/pmjones/pear/php/Text/Wiki.php(917):
> Text_Wiki->parse('?== Title ==??H...')
> #8
> /Users/pmjones/Sites/pmjones.dnsalias.net/test/test-wiki.php(11):
> Te in /Users/pmjones/Sites/dev/solar/trunk/Solar.php on line 605
>
> So the problem is with class_exists($class) in Text/Wiki.php on line
> 1317. As noted earlier, it is related to spl_autoload().
>
>
> The Fix
> -------
>
> Change line 1317 to "class_exists($class, false)" ... the second
> "false" param tells it not to use autoload. Do that, and the test
> code works, so it should work on your production machines as well.
>
> FYI, the full list of class_exists() calls for the whole Text_Wiki
> project is (line numbers) 472, 474, 1317, 1354, 1388, 1526. These
> other lines did not cause exceptions, but they might in the future, so
> you may want to apply the "false" param fix on them as well.
>
> I will continue researching a bit and see why it's not finding the
> Prefilter rule.
>
> Hope this helps, please let me know if it does not.
>
Yep, that fixes it, and I'm not seeing any other exceptions after doing
a quick crawl :) Thanks a bunch, you saved the day! Maybe the current
Text_Wiki maintainer is interested in fixing this permanently?
-Andreas
More information about the Solar-talk
mailing list