Archiwum

Posty oznaczone ‘Apache’

Reguły z mod_rewrite nie działają modułem userdir (Apache,Debian, Linux)

Czerwiec 1st, 2009

Apache LinuxParę dni temu znajomy poprosił mnie o pomoc przy uruchomieniu modułu mod_rewrite w Apache’u który dostarczony jest z Debianem. Problem przejawiał się tym, że nie działało przekierowywanie stron ładowanych modułem userdir (przykładowy adres strony: http://localhost/~uzytkownik/). Opiszę kroki jakie trzeba wykonać aby temat rozwiązać:

Najpierw sprawdźmy czy moduły rewrite i userdir są ładowane podczas uruchomienia Apache. Odpalamy funkcję phpinfo() i szukamy sekcji apache2handler, wiersza Loaded Modules. Tam, wśród różnych opcji, powinny znajdować się dwa interesujące nas pozycje (mod_rewrite oraz mod_userdir).

Jeżeli ich tam nie ma, przechodzimy do katalogu /etc/apache2/mods-enabled/, sprawdzając czy zawiera dowiązania symboliczne ładujące odpowiednie rzeczy:

root@venoma:/etc/apache2/mods-enabled# ls -al rewrite* userdir*
lrwxrwxrwx 1 root root 30 06-01 02:09 rewrite.load -> ../mods-available/rewrite.load
lrwxrwxrwx 1 root root 30 05-26 18:14 userdir.conf -> ../mods-available/userdir.conf
lrwxrwxrwx 1 root root 30 05-26 18:14 userdir.load -> ../mods-available/userdir.load

Jeżeli ich tam nie ma, tworzymy je poleceniem:

root@venoma:/etc/apache2/mods-enabled# ln -s ../mods-available/userdir.load
root@venoma:/etc/apache2/mods-enabled# ln -s ../mods-available/userdir.conf
root@venoma:/etc/apache2/mods-enabled# ln -s ../mods-available/rewrite.load

Restartujemy Apache:

/etc/init.d/apache2 restart

i ponownie odpalamy phpinfo(). Moduły powinny być już załadowane (założyłem tutaj, że odpowiednie pliki znajdują się w katalogu /etc/apache2/mods-available/)

Teraz otwieramy plik /etc/apache2/sites-available/default. W tymże pliku szukamy linii z opcją AllowOverride w sekcji <Directory /> , aby rewrite działał poprawnie, powinna ona wyglądać tak

AllowOverride All

Kolej na konfigurację modułu userdir. Otwieramy /etc/apache2/mods-enabled/userdir.conf, w którym nie powinna pojawić się pozycja AllowOverride None. Prawdopodobnie linijka będzie wyglądała tak:

AllowOverride FileInfo AuthConfig Limit Indexes

jest to poprawny wpis.

Ponownie restartujemy Apache:

/etc/init.d/apache2 restart

W tej chwili moduł rewrite będzie działał poprawnie. Problemem może okazać się jego użycie wraz z modułem userdir.  Aby wszystko działało poprawnie, trzeba odpowiednio skonstruować  plik .htaccess. Musi on zawierać dyrektywę RewriteBase:

Dla adresu np. http://localhost/~felixd/ powinna ona wyglądać tak:

RewriteBase /~felixd/

dla http://localhost/~felixd/projekt2/:

RewriteBase /~felixd/projekt2/

Podziel się:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Wykop
  • LinkedIn
  • Live

php_pdo_mysql.dll + apache.exe w XAMPP 1.7

Kwiecień 13th, 2009

MySQLLokalnie do testowania aplikacji pod Windowsem używam Xampp’a (wersja 1.7).  Jednak biblioteka do PHP PDO MySql’a w tym nie funkcjonuje tak jak należy. Udało mi się nawiązać połączenie z baza danych, lecz w momencie wykonywania zapytania „SELECT * FROM `bazadanych`” biblioteka zawiesza Apacha. Problem został już zgłoszony do grupy PHP, jednak na dzień dzisiejszy nie został oficjalnie rozwiązany.

http://bugs.php.net/bug.php?id=47722

Rozwiązanie znalazłem na forum Xamppa. Aby to naprawić należy ściągnąć ten plik,

http://windows.php.net/downloads/snaps/php-5.2-win32-VC6-x86-latest.zip

rozpakować go, znaleść libmysql.dll i podmienić pliki w katalogach xamppapachebin oraz xamppphp.

http://www.apachefriends.org/f/viewtopic.php?f=16&t=32617

Podziel się:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Wykop
  • LinkedIn
  • Live