První pokus o spuštění dle doc.nette.org/cs/installation

jik
Člen | 150
+
0
-

Zdravím,
zkouším rozjet Nette a mám problém.
http://localhost/…/checker.php hlásí OK, ovšem

http://localhost/…sandbox/www/ nahlásí toto:

Nette\Utils\RegexpException

preg_match(): Compilation failed: POSIX collating elements are not supported at offset 148 in pattern: ~^ ( (?P<name>\?|/?[a-z]\w+(?:[.:]\w+)+(?!::|\())| ## ?, name, /name, but not function( or class:: (?P<noescape>!?)(?P<shortname>/?[=\~#%^&_]?) ## [!] [=] expression to print )(?P<args>.?) (?P<modifiers>\|a-z‚|„(?:\\.|[^“\\])„|[^‘“]+))? ()$~isx

37: $container->application->run();

Co je to – nějaký chybějící balík? ale který? Doma mám OpenSUSE 12.1 s PHP 5.3.8 resp. 9 (oba se stejným výsledkem), zajímavé, že v práci OpenSUSE 11.4 PHP z hlavy nevím jaké, to naskočilo dobře. Myslím, že ani v práci jsem nic extra neinstaloval.

děkuji a zdravím

jik

juzna.cz
Člen | 248
+
0
-

Muzes se prosim podivat na phpinfo() a vypsat sekci pcre. Mrkni, zda se lisi mezi stroji, kde ti to jde a kde ti to nejde.

Ja mam PCRE verzi 8.12 2011–01–15 a zadny problem mi to nehlasi. Podle googlu na tom novem OpenSUSE by melo byt 8.13, ktere asi pridava nejake validace

Editoval juzna.cz (4. 2. 2012 1:07)

jik
Člen | 150
+
0
-

Je to tak:

PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 8.13 2011–08–16

jik
Člen | 150
+
0
-

Tak OpenSUSE 11.4 má PCRE ve verzi 8.10.

Co by se s tím rozumně jednoduše dalo dělat? Musím začít něco vyšívat a uvažoval jsem o tomto – je nějaká cesta Nette zprovoznit (v dohledné době)? Zatím neuvažuji o návratu na OS11.4, nehledě na to, že by to byla stejně krátkozrakost.

juzna.cz
Člen | 248
+
0
-

Zkus si s prislusnym regularnim vyrazem pohrat tak, aby nenadaval. Pak nam muzes rict, jak jsi to opravil. Ostatni to asi nevykoumaji, kdyz maji verzi PCRE ve ktere jim to funguje.

Milo
Moderator | 1283
+
0
-

Zkus v tom reguláru udělat následující změnu, tj. aby za hranatou závorkou nebylo rovnítko.

(?P<shortname>/?[=\~#%^&_]?)
(?P<shortname>/?[#=\~%^&_]?)
Milo
Moderator | 1283
+
0
-

Nebo ještě jinak, dej před to rovnítko backslash.

(?P<shortname>/?[=\~#%^&_]?)
(?P<shortname>/?[\=\~#%^&_]?)
jik
Člen | 150
+
0
-

Velice děkuji. Funguje – oba návrhy. Takový přídavný dotaz – vo co gou?

Milo
Moderator | 1283
+
0
-

Nejsem si jistý. Nějaká chyba ve verzi PCRE 8.13 při zpracování collating elements a/nebo komentářů.

pokornymartin
Člen | 8
+
0
-

Dobry den,

pokousim se taktez zprovoznit posledni verzi (NetteFramework-2.0.8-PHP5.3.zip) na Kubuntu 10.12 a nedari se mi:

vsechny kontroly jsou OK, ale po pristupu na stranku http://localhost/…sandbox/www/ dostanu tuto odpoved:

Nette\Utils\RegexpException

preg_match(): Compilation failed: internal error: previously-checked referenced subpattern not found at offset 474 in pattern: ~ (?:(?<=\n|^)[ \t]*)?<(?P<closing>/?)(?P<tag>[a-z0-9:]+)| ## begin of HTML tag <tag </tag - ignores <!DOCTYPE <(?P<htmlcomment>!--)| ## begin of HTML comment <!-- (?P<comment>\{(?![\s'"{}])\*.*?\*\}\n{0,2})| \{(?![\s'"{}]) (?P<macro>(?:'(?:\\.|[^'\\])*'|"(?:\\.|[^"\\])*"|\{ (?P<inner>'(?:\\.|[^'\\])*'|"(?:\\.|[^"\\])*"|\{(?P>inner)\}|[^'"{}])*+ \}|[^'"{}])+?) \} (?P<rmargin>[ \t]*(?=\n))? ## macro tag ~xsi`

zkousel jsem upravit Parser.php a porad stejny vysledek – muzete mi prosim poradit co s tim?

dekuji

Jan Tvrdík
Nette guru | 2595
+
0
-

@pokornymartin: Jakou máš verzi PHP a verzi pcre?

pokornymartin
Člen | 8
+
0
-

PHP: 5.4.7
PCRE: 8.12 2011–01–15

je to z baliku XAMPP 1.8.1.

Milo
Moderator | 1283
+
0
-

Mě tenhle regexp s PCRE 8.12 projde, ale chyba možná závisí na parsovaném obsahu. Řešilo se to už tady na fóru.

Bude to chtít trochu debugování, protože se ten RE sestavuje dynamicky.

@pokornymartin: Mohl bys udělat pár dumpů a pastnout je sem? A aby se zachovaly konce řádků…
V souboru Nette\Latte\Parser.php na začátek metody match():

private function match($re)
{
	\Nette\Diagnostics\Debugger::$maxLen = 1e6;
	dump($this->input);
	dump($re);
	if (....)

EDIT: A bude stačit pastnout jen ten poslední, než to spadne.

Editoval Milo (18. 2. 2013 20:50)

pokornymartin
Člen | 8
+
0
-

omlouvam se za natvrdlost.. ale ten dump se zobrazi kde?

Do souboru Nette\Latte\Parser.php na začátek metody match() jsem pridal ty tri radky, ale pri zavoalni stranky http://localhost/…sandbox/www/ se zobrazuje vse beze zmeny …

diky za trpelivost

Milo
Moderator | 1283
+
0
-

Zobrazí se v prohlížeči v kódu stránky. Jestli Ti s tou chybou PCRE vyskočila laděnka, tak ty dumpy budou schované pod ní. Klikni v pravém horním rohu…

pokornymartin
Člen | 8
+
0
-

toto?:

File: …/libs/Nette/Utils/Strings.php Line: 460

450:         * @param  int  offset in bytes
451:         * @return mixed
452:         */
453:        public static function match($subject, $pattern, $flags = 0, $offset = 0)
454:        {
455:            if ($offset > strlen($subject)) {
456:                return NULL;
457:            }
458:            set_error_handler(function($severity, $message) use ($pattern) { // preg_last_error does not return compile errors
459:                restore_error_handler();
460:                throw new RegexpException("$message in pattern: $pattern");
461:            });
462:            $res = preg_match($pattern, $subject, $m, $flags, $offset);
463:            restore_error_handler();
464:            if (preg_last_error()) { // run-time error

Editoval pokornymartin (19. 2. 2013 10:32)

Milo
Moderator | 1283
+
0
-

Ne, to je laděnka. Já potřebuji obsah těch proměnných co se dumpují.

Když se Ti zobrazí laděnka (červená obrazovka), zmáčkni Esc a ona se schová a uvidíš normální stránku.

pokornymartin
Člen | 8
+
0
-

hmm, tak tam se mi zobrazi prazdna stranka, jen s Debugger Barem vpravo dole a cervenou sipkou ladenky vpravo nahore

Milo
Moderator | 1283
+
0
-

Tak to zkus uložit někam do souboru a pak ho sem pastnout:

private function match($re)
{
	$out = var_export($this->input, TRUE) . "\n" . var_export($re, TRUE) . "\n\n\n";
	file_put_contents('/cesta/do/tempu/dump.file', $out, FILE_APPEND);
	if (....)
enumag
Člen | 2118
+
0
-

Pokud potřebujete dumpovat, není jednodušší použít barDump?

Milo
Moderator | 1283
+
0
-

Rád bych, aby dumpy nebyly ořízlé a zachovaly se konce řádků a taby…

pokornymartin
Člen | 8
+
0
-

bohuzel se mi nedari vubec nic z toho dostat :(
zkusim to rozjet na jinem PC a ozvu se

Milo
Moderator | 1283
+
0
-

Zkompiloval jsem si PHP 5.4.7 s PCRE 8.12 a sandbox normálně rozjedu. Upravoval jsi v něm něco?

pokornymartin
Člen | 8
+
0
-

vubec nic – jen jsem rozbalil archiv do rootu www (nette) … a nic :(
kontrola probehne OK, ale dal se nedostanu

EDIT: ted jsem to nahrnul na jine PC a tady to funguje bez problemu na prvni spusteni

PHP Version 5.3.10–1ubuntu3.5
PCRE Library Version 8.12 2011–01–15

zkusim na tom puvodnim prekopat PHP

Editoval pokornymartin (19. 2. 2013 21:52)

Milo
Moderator | 1283
+
0
-

Tohle bude těžko odhalitelný bug. Co jsem googlil, občas se objeví i v novější verzi PCRE. Hodně by pomohlo, kdyby se Ti podařilo udělat ty dumpy do souboru a ten soubor zazipoval a vystavil někam ke stažení.

Milo
Moderator | 1283
+
0
-

Btw… když jsi dopisoval ten dump, určitě jsi upravoval Parser.php ve správné složce?
sandbox/libs/Nette/Latte/Parser.php

Milo
Moderator | 1283
+
0
-

A ještě jedna věc mě napadla… před dumpem je potřeba vymazat temp.

pokornymartin
Člen | 8
+
0
-

tak uz to funguje – vyhodil jsem XAMPP a veskera nastaveni apache, php atd.
nacisto nainstaloval LAMP
verze PHP: 5.4.6–1ubuntu1.1
PCRE: 8.30 2012–02–04

a frci to :) diky moc za rady!

RSS tématu Téma zavřeno