[PHP] Niedziałające funkcje i handler'y

0

Mam zainstalowanego Apache'a i PHP5 pod Windowsem. (KRASNAL-Serv)

Nie mogę użyć następujących rzeczy:

Dla buforowanego wyjścia ob_start():
ob_tidyhandler
ob_gzhandler

Funkcji:
tidy_*

Co trzeba zrobić aby móc tych rzeczy użyć?

0

Potrzebujesz plików:
PHP\ext*.dll
(na przykład php_tidy.dll)

Pod Windows instalatorowa wersja PHP ich nie daje - tylko binarna bez instalatora. Poza tym zobacz, jak w pliku %WINDIR%\PHP.ini są włączane rozszerzenia (extensions).

0
Szczawik napisał(a)

Potrzebujesz plików:
PHP\ext*.dll
(na przykład php_tidy.dll)

Pod Windows instalatorowa wersja PHP ich nie daje - tylko binarna bez instalatora. Poza tym zobacz, jak w pliku %WINDIR%\PHP.ini są włączane rozszerzenia (extensions).

DLLe mam, rozszerzenia w php.ini w WINDIR mam włączone ale i tak niektóre nie działają, przykładowo:

Warning:
PHP Startup: Unable to load dynamic library 'c:\usr\php5\ext\php_mcrypt.dll' - Nie można odnaleźć określonego modułu

Taki sam błąd dla:
php_openssl.dll

Pliki istnieją; ścieżki dobre; wersje plików z modułów PECL dla PHP 5.1.2

0

a gdzie masz te moduły i jak wygląda ścieżka z extensions w konfigu ?

0

Prawdopodobnie windows nie może znaleźć jakiś dll. Możesz spróbować rozwiązać problem przenosząc do c:/windows/system32/ pliki:

  1. libmysql.dll
  2. msql.dll

ale lepszym sposobem jest włączenie ścieżki do PHP dll w Windows PATH (w ten sposób zaoszczędzisz sobie problemów w przyszłości).

czyli dodaj ścieżkę do katalogu w którym przechowujesz dll PHP do:
Control Panel/System/Advanced/Environment Variables/Path

pozdrawiam

0

Dzięki, wszystkim, trochę mnie zmotywowaliście, pokombinowałem i rozwiązałem problem troszkę inaczej - ważne że działa.

Jeszcze tylko małe pytanko odnośnie TIDY HTML:
Można w nim ustawić "accessibility-checks" (Ustawiłem na 3)
Po sparsowaniu tekstu mam ok 53 błędów w WAI Priority 3.

Pytanie:
Jak można podejrzeć jakie są to błędy?

http://pl.php.net/manual/en/function.tidy-diagnose.php
Tutaj jest podobny przykład gdzie po sparsowaniu tekstu, poddaje się go diagnostyce a potem sprawdza ilość błędów TIDY i można te błędy wypisać przez np. tidy_get_error_buffer().

Jak wypisać niedomagania standardu WAI?

Mam dość duży kod XHTML i to jak szukanie igły w stogu siana, a jak TIDY by mi pokazało jakie to niedomagania zawsze było by łatwiej je poprawić, mając na uwadze to że priorytet 3 ma największe wymagania.

0
prgtw napisał(a)

Dzięki, wszystkim, trochę mnie zmotywowaliście, pokombinowałem i rozwiązałem problem troszkę inaczej - ważne że działa.

nie badz taki... pochawal sie jak ? moze komus sie przyda :)

0

Troszkę zmodyfikowany wycinek kodu z mojej strony WWW:

Wszystko działa jak powinno aczkolwiek gdy włączona jest kompresja GZIP to próbując zwalidować kod XHTML walidatorem W3C wyskakuje błąd że pierwszy znak na stronie jest niezgodny z UTF-8. Bez kompresji GZIP wszystko hula aż miło spojrzeć.

Podejżewam że następna linia po wysłaniu header'a (Content-Encoding: gzip) powoduje ten błąd ale bez tej linii (wysłania kilku znaków początkowych) strona się nie wyświetli bo te znaki to nagłówek informujący że strona jest skomresowana GZIPem.

Walidacja poprzez wklejenie kodu źródłowego do walidatora (Form Submission) działa, nie działa tylko sprawdzenie przez referer.

Nie wiem jak sobie z tą walidacją poradzić [!!!]


$TIDY = true;
$GZIPCompression = true;
$GZIPCompressionLevel = 9;

ob_start();
//TUTAJ PRINT CAŁEJ STRONY WWW
$PageSize = ob_get_length();
$Page = ob_get_clean();
if($TIDY===true){
	$Config = array(
		"indent" => true,
		"indent-spaces" => 2,
		"output-xml" => true,
		"output-xhtml" => true,
		"fix-backslash" => true,
		"fix-bad-comments" => true,
		"fix-uri" => true,
		"indent-cdata" => true,
		"lower-literals" => true,
		"numeric-entities" => false,
		"accessibility-check" => 3,
		"break-before-br" => true,
		"show-errors" => 6,
		"show-warnings" => true,
		"wrap" => 200
		);
	$Page = tidy_parse_string($Page, $Config, "UTF8");
	$Page->CleanRepair();
	//$Page->diagnose();
	//$Page .= "<div><br />".tidy_access_count($Page)." WAI Priority 3 errors</div>";
	$PageSize = strlen($Page);
}
if($GZIPCompression===true){
	header("Content-Encoding: gzip");
	print "\x1f\x8b\x08\x00\x00\x00\x00\x00";
	print substr(gzcompress($Page, $GZIPCompressionLevel ), 0, -4);
	print pack("V", crc32($Page));
	print pack("V", $PageSize);
}else{
	print $Page;
}
0

prgtw: raczej chodzilo mi o to jak sobie poradziles z uruchomieniem tego ;)

0
nediam napisał(a)

prgtw: raczej chodzilo mi o to jak sobie poradziles z uruchomieniem tego ;)

Do php.ini dodałem rozszerzenie php_tidy.dll, za GZIP nie wiem jakie odpowiada (może bz2 - też mam włączone).

W php.ini zmienna zlib.output_compression ustawiona na 0 albo brak wartości (na pewno nie na true albo 1).

Restart Apache'a

Normalnie ob_gzhandler i ob_tidyhandler mi nie działają (jako funkcje ani jako callback function dla ob_start), ale funkcje tidy_* mi już działają, GZIP uzyskałem dzięki gzcompress() i pack() - co widać w kodzie powyżej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1