AMFPHP i błąd 403 - Forbidden

Długo szukałem rozwiązania problemu, jaki pojawił się po przeniesieniu aplikacji AMFPHP z Windows na Linuksa. Skrypt gateway.php wywoływany z ‘palca’, czyli z URLa http://serwer/gateway.php odpowiadał prawidłowo. Browser już gorzej - nie wyświetlał prawego panelu z listą metod, a FireBug poproszony o przedstawienie odpowiedzi serwera napisał o błędzie 403 - Forbidden. Ciekawe, że w Google nie znalazłem nic konkretnego, na jednym tylko forum wskazówkę, że chodzi o prawa dostępu. To akurat było łatwe do wydedukowania. Śledztwo wykazało winnego - w skrypcie /core/shared/util/MethodTable.php, w linii 164 wywoływana jest funkcja touch($sourcePath) , gdzie $sourcePath wskazuje na nazwę uruchamianej usługi. Wystarczy ustawić Apaczowi prawo do zapisu pliku usługi (np. /services/Usluga.php) i od razu jest lepiej.

Piszą o AMFPHP na flashzone.pl.

Upload plików we Fleksie

Prosta sprawa, ale postanowiłem zacząć od Google. Znalazłem fajny, gotowy komponent do uploadu całej listy plików, ale… trochę nie działał. Przestudiowałem dokumentację, potem kilka forów i wreszcie na CodingCowboys: jest. Okazało się, że Flex ma błąd w uploadzie i wysyła plik bez kończącego znacznika MIME. Aby to obejść wystarczy dodać plik .htaccess, a w nim dwie linijki (dla Apache/Linux):

SecFilterEngine Off
SecFilterScanPOST Off

Działa. Załączam lekko skorygowane pliki Flex i PHP. W aplikacji wstawiamy coś takiego:


<com:FileUpload
width="100%" height="100%"
uploadUrl="http://nucom.ntxt.net/upload.php"
uploadComplete="Alert.show('File(s) have been uploaded.', 'Upload successful')"
uploadIOError="Alert.show('IO Error in uploading file.', 'Error')"
uploadSecurityError="Alert.show('Security Error in uploading file.', 'Error')"/>