Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przesiadka z kodem na Linuxa, mod_rewite i function on a non-object tylko pod Linuxem
onlyX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Witam!

Na wirtualnej maszynie postawiłem sobie Apacha z php5 i MySQL i próbuję przenieść na niego kod mojej aplikacji z localhosta pod Winodwsem.
Jednak się sypie. Korzystam w ModRewrite do przekierowania wszystkich adresów poza pewnymi katalogami na index.php:
  1. <?php
  2. RewriteEngine On
  3. RewriteRule !(^include/|^pics/|^templates) index.php
  4. ?>

jednak po wywołaniu adresów typu http://192.168.1.160/collector/item/1 wyświetla się pusta strona

natomiast na innych podstronach wywołuje mi błędy w funcjach, które pod Win nie sprawiają, żadnych problemów, dla przykładu:
  1. <?php
  2. Fatal error: Call to a member function makeURL() on a non-object in /var/www/collector/register.php on line 62
  3. ?>


Nie jestem zbyt obeznany z linuxem, to moje początki z tym systemem. Wydaje mi się że mod_rewrite jest uruchomiony, ale 100% pewności nie mam. Poza tym pozostałe błędy nie są chyba tym wywołane.

Jeśli ktoś ma pomysł dlaczego tak się dzieje, co mogłem pominąć w instalacji albo czego brakuje w configach, byłbym bardzo wdzięczny za sugestie.

pozdrawiam
Tomek.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Kildyt -> mod_rewrite jest częścią źródeł Apache'a, więc ciężko, żeby go nie było... co najwyżej może być wyłączony, ale jest obecny w "standardowym" Apache. Xampp nie jest nikomu do szczęścia potrzebny, zwłaszcza pod Linuksem (a tego dotyczy temat). Czysty PHP też ma GD i się nie chwali, a instalacja phpMyAdmina to kwestia rozpakowania archiwum i zmiany nazwy jednego pliku... nic trudnego.

Wracając do tematu... pod systemami uniksowymi musisz patrzeć na kilka istotnych różnic:

1. W ścieżkach występują slashe i powinno się podczas programowania używać tylko ich.
2. Żadnych liter dysków.
3. Systemy uniksowe rozróżniają wielkość liter! Request.php oraz request.php to dwa różne pliki.
4. Inny system uprawnień.
5. Skrypt PHP będzie Ci się wykonywać z prawami jakiegoś użytkownika. Jeśli PHP doinstalowany jest do Apache'a jako moduł serwera, będzie on pracować na prawach serwera, a nie Twoich i objawi się to przy próbie stworzenia jakiegoś pliku przy PHP. Konieczne jest także nadanie odpowiednio dużych uprawnień, ale widzę, że z tym sobie poradziłeś na tyle, by skrypt zaczął się wykonywać. Rozwiązaniem jest FastCGI, ale pod Apache jest to cholernie ciężkie do skonfigurowania (wina leży w module mod_fastcgi, który jest jakiś lewy - próbowałem już co najmniej kilka razy i nigdy nie działało, tymczasem w Lighttpd wychodzi za pierwszym razem).

Kwestie systemu plików nie tłumaczą do końca, dlaczego dostajesz błąd wywoływania metody na nieistniejącym obiekcie. W normalnym skrypcie to nie powinno mieć miejsca. Gdyby był problem z wczytaniem jakiegoś pliku, dostałbyś albo Fatal error z informacją o braku dostępu, albo jakieś ostrzeżenia, że nie można otworzyć pliku. Problem moim zdaniem leży więc gdzieś w tym, że Twój skrypt zawiera jakieś dziwne instrukcje, które bazują dość mocno na jakiejś właściwości Windowsa. Przez brak odpowiedniej obsługi błędów albo pominięcie jakiegoś warunku w warunkach uniksowych nie tworzy on jakiegoś obiektu i efekt widać.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 23:11