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 16.04.2009, 17:57:59
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 (1 - 8)
artur_dziocha
post 16.04.2009, 18:18:50
Post #2





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


sprawdź w phpinfo
bodajże ukośniki idą inaczej w Windows a inaczej w Linuksie
Linux ma slash, a Windows backslash

w terminalu a2enmod rewrite

Ten post edytował artur_dziocha 16.04.2009, 18:21:39
Go to the top of the page
+Quote Post
onlyX
post 16.04.2009, 19:15:38
Post #3





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

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


  1. debian:/media/driver# a2enmod rewrite
  2. ERROR: Module rewrite not properly enabled: /etc/apache2/mods-enabled/rewrite.load is a real file, not touching it

ok, więc jak poprawnie dodać mod_rewrite do Apacha2
httpd.conf mam czysty
a w apache2.conf nie ma nic o rozszerzeniach, a już na pewno nie ma długiej listy z zakomentowanymi modułami

nie bardzo wiem czego mam szukać w phpinfo()? w całej aplikacji wszędzie używam slashy /


dodam, że mój system to Debian, a apacha2 i całą resztę instalowałem przez apt-get

Ten post edytował onlyX 16.04.2009, 19:17:43
Go to the top of the page
+Quote Post
dadexix
post 16.04.2009, 20:20:26
Post #4





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

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


by wyeliminować że mod_rewrite nie działa zrób prostą regułę

Kod
RewriteRule abc.php index.php


wywyłaj abc.php i się dowiesz

btw. na obydwóch systemach masz tę samą wersje apache i php? możesz mieć starszą lub np. na jednym apache 2.x a na drugim 1.3

Ten post edytował dadexix 16.04.2009, 20:20:50


--------------------
"Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...]
Grins: mów normalnie do mnie a nie po polsku
Ja: normalnie to znaczy jak?
Grins: No w PHP... inaczej mój parser ledwo kuma:)
Go to the top of the page
+Quote Post
artur_dziocha
post 16.04.2009, 20:46:46
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


a2enmod rewrite tą komende wydajesz jako root??
instalowałeś to wszystko -
Kod
apt-get install apache2 php5 php-pear mysql-server-5.0 php5-mysql


Cytat
Podpowiem jednak iz mod_rewrite ni ma nic wspolnego z PHP i w phpinfo() nie znajdziesz nic ciekawego na ten temat...

A Loaded Modules w phpinfo()??Jest dział apache2handler
Kod
etc/apache2/sites-available/default
tutaj edytujesz ustawienia serwera hosta(heh)
pozniej w terminalu jako root /etc/init.d/apache2 restart
Wypróbuj

Ten post edytował artur_dziocha 16.04.2009, 21:12:32
Go to the top of the page
+Quote Post
Kildyt
post 16.04.2009, 22:02:16
Post #6





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Nie znajdziesz modułu mod_rewrite w standardowym apache. Najlepiej jak zainstalujesz sobie xampp-a. Od razu masz tam phpmyadmin i GD.


--------------------
Go to the top of the page
+Quote Post
Zyx
post 17.04.2009, 07:01:13
Post #7





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ć.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
onlyX
post 17.04.2009, 07:55:47
Post #8





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

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


Dzięki za spory odzew. Rozwiązałem problem.
Problem tkwił w złej konfiguracji w
  1. etc/apache2/sites-available/default

and the winner is: Zyx

Dzięki wielkie dla wszystkich za wskazówki.
Go to the top of the page
+Quote Post
Kildyt
post 18.04.2009, 09:20:58
Post #9





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Cytat(Zyx @ 17.04.2009, 08:01:13 ) *
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.

No tak, teraz muszę płacić za swoją niewiedze. Dzięki za info. winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 18:23