Skocz do zawartości
Zaloguj się, aby obserwować  
FanPL

myBB na VPS

Polecane posty

Hej, niedawno postawiłem sobie na moim serwerze VPS nginx + php fm + mysql + ispconfig. Na mojej subdomenie dałem phpinfo i pokazało się ładnie, lecz jak wrzuciłem tam pliki myBB to mam błąd 500 Interial Server Error. Oto log z nginxa:

2013/01/05 02:17:26 [error] 18315#0: *3 FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(/var/www/clients/client0/web1/web/inc/init.php): failed to open stream: No such file or directory in /var/www/clients/client0/web1/$
PHP message: PHP Fatal error:  require_once(): Failed opening required '/var/www/clients/client0/web1/web/inc/init.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/clients/client0/web1/web/global.php on line 19" while $

Błąd niby wskazuje, że nie ma pliku init.php, ale przez FileZille sprawdziłem i okazało się, że jest.

Macie jakiś pomysł jak to naprawić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak jest. Złe chmody bądź inne zabezpieczenia, które uniemożliwiają nginx'owi dostać się do skryptu.

 

Polecam zacząć od chown -hR www-data:www-data /var/www/, które zmieni całe /var/www/ i wszystkie podfoldery na ownera www-data (czyli defaultowego nginx). Jeśli nadal nie będzie mógł się dostać do plików to musisz sprawdzić dlaczego tak się dzieje. Może to być również jakieś zaawansowane security typu openbasedir. Jednak wciąż sądzę, że skoro jeden plik .php działa to winą może być jakiś brakujący moduł. Musiałbyś sprawdzić konkretną linijkę i jak to wygląda, szklanej kuli niestety nie mam. Zabiegi wyżej tylko upewniają nas w fakcie, że problem nie jest prostszy niż wygląda.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wydaje mi się, że błedem może być to, że Virtual Directory Support jest wyłączony.

Linjka 19(global.php)[Daje z całą funkcją]:

$working_dir = dirname(__FILE__);
if(!$working_dir)
{
   $working_dir = '.';
}

// Load main MyBB core file which begins all of the magic
require_once $working_dir."/inc/init.php";

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wygląda na dobrze.

/var/www/clients/client0/web1/web/global.php => /var/www/clients/client0/web1/web/inc/init.php

 

Strzelam, że plik o takiej ścieżce rzeczywiście istnieje.

 

Możesz się do niego dostać bezpośrednio? Mam na myśli http://domena.pl/inc/init.php

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

500 to Internal Server Error. Logi nic nam więcej nie mówią w tym przypadku? Powinny wypluć coś więcej jak wchodzimy bezpośrednio.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jedynie to:

013/01/05 02:45:35 [error] 19747#0: *92 rewrite or internal redirection cycle while internally redirecting to "/error/404.html", client: IP, server: domena.pl, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:90$

(Poprawiłem strony błędów(Pliki .html na nowo wrzuciłem do /error/)

Edytowano przez FanPL (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czuję, że gdzieś masz błąd w konfiguracji.

 

Wkleję Ci swoje "kawałeczki".

 

sites-available/default

server {
       server_name jakis.serwer.pl www.jakis.serwer.pl;
       root /jakis/path;
       index index.php index.html index.htm;
       location ~ \.php$ {
               include /etc/nginx/fpm.conf;
       }
       location ~ /\. { deny  all; }
}

 

fpm.conf

fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;

 

fastcgi_params

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_FILENAME         $request_filename;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;

 

Upewnij się, że nigdzie nie masz żadnego problemu. Strzelałbym na SCRIPT_FILENAME, możliwe że gdzieś masz błąd w konfiguracji i źle interpretuje całość.

 

Anyway moje MyBB na powyższej konfiguracji działa. Posprawdzaj, potestuj ;).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Więc tak, fpm.conf nie mogłem znaleźć :unsure:. Znalazłem za tofastci_params i mam takie same. A to mój plik (Wygenerowany przez ispconfig, trochę zmieniony) subdomeny.

server {
    listen *:80;


    server_name kamil.iside.pl www.kamil.iside.pl;

    root   /var/www/kamil.iside.pl/web;



    index index.html index.htm index.php index.cgi index.pl index.xhtml;



    error_page 400 /error/400.html;
    error_page 401 /error/401.html;
    error_page 403 /error/403.html;
    error_page 404 /error/404.html;
    error_page 405 /error/405.html;
    error_page 500 /error/500.html;
    error_page 502 /error/502.html;
    error_page 503 /error/503.html;
    recursive_error_pages on;
    location = /error/400.html {
	    internal;
    }
    location = /error/401.html {
	    internal;
    }
    location = /error/403.html {
	    internal;
    }
    location = /error/404.html {
	    internal;
    }
    location = /error/405.html {
	    internal;
    }
    location = /error/500.html {
	    internal;
    }
    location = /error/502.html {
	    internal;
    }
    location = /error/503.html {
	    internal;
    }

    error_log /var/log/ispconfig/httpd/kamil.iside.pl/error.log;
    access_log /var/log/ispconfig/httpd/kamil.iside.pl/access.log combined;


    location ~ \.php$ {
	    try_files $uri =404;
	    include /etc/nginx/fastcgi_params;
	    fastcgi_pass 127.0.0.1:9010;
	    fastcgi_index index.php;
	    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	    fastcgi_param PATH_INFO $fastcgi_script_name;
	    fastcgi_intercept_errors on;
    }



}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nikt nie powiedział, że musisz mieć fpm.conf. Ja po prostu sobie zesplitowałem redirect na parę bardziej zrozumiałych kroków.

 

Wyrzuć:

					fastcgi_pass 127.0.0.1:9010;
				fastcgi_index index.php;
				fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
				fastcgi_param PATH_INFO $fastcgi_script_name;
				fastcgi_intercept_errors on;

Wklej:

 

fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9010;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;

 

Nie zapomnij o:

service nginx restart

 

Sprawdź ;).

Edytowano przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Niestety nie działa :wacko:. Może to wina tego, że dafault mam w zupełnie innym katalogu(usr/share/nginx)?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nginx przy włączaniu wywala bład. Ale w /usr/share[...] nie ma fastcgi_params bo tam w katalogu www trzymam po prostu stronę główną, a subdomeny w /var/www. Odziwo zrobiłem drugą subdomenę i zrobiłem w niej folder i wsadziłem tam plik .php i odtworzyło ładnie. Tylko z tym MyBB jakiś problem :/

 

@edit

Na subdomenę wgrałłem mybb i podczas wgrywanie, jak się jeszcze /inc nie zuplałdowało to był zwyłky error php falied to open (tamto require_once). A jak się już wgrało to znowu w logu jest:

2013/01/05 18:40:19 [error] 17550#0: *8 rewrite or internal redirection cycle while internally redirecting to "/error/404.html", client: 66.249.78.4, server: test.iside.pl, request: "GET /ratethread.php?tid=32&rating=3&my_post_key=80da2$

Edytowano przez FanPL (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Inteiral =/

2013/01/05 02:45:35 [error] 19747#0: *92 rewrite or internal redirection cycle while internally redirecting to "/error/404.html", client: Moje ip, server: domena.pl, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:90$

Ten sam błąd =/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Coś czuję tu jakieś rewrite'y bo to nie jest normalne. Spróbuj tymczasowo wyrzucić wszystko związane z error/404.html, zarówno z sites-available/default, jak i nginx.conf (o ile coś znajdziesz).

 

Na defaultowej instalacji nginx'a z php-fpm wszystko śmiga więc rzeczywiście ISP musiało coś namieszać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Powoli tracę do tego siły. apps.vhost <--To od ISP odnośni się do wszystkiego chyba, bo server name _ , lecz nie wiem co tam za bardzo pozmieniać. Specjalnie nie zależy mi zresztą na ISP, może polecisz coś darmowego, co będzie OK. W sumie to hosting tylko dla kilku moich znajomych i dla mnie przede wszystkim.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Szczerze? Właśnie przez takie rzeczy nie mam zaufania do ustrojstwa dopisującego się "na twardo" do aplikacji :).

 

Jeśli chodzi o panel to nie mam, ale na czystym systemie wystarczy apt-get installl nginx && apt-get install php5-fpm, dodać do głównego /sites-available/default bridge do traktowania PHP i jesteśmy w domu. Nie jestem fanem graficznych dodatków, ale jak już muszę to zawsze darzę respektem darmowego Webmin'a, który co prawda samego nginxa w sobie nie obsługuje, ale to nie jest jakoś bardziej "wymagane", bo całość kolejnego vhosta działa tak samo:

 

server {
       server_name forum.domena.pl www.forum.domena.pl;
       root /path/to/forum;
       index index.php index.html index.htm;
       access_log /var/log/nginx/forum.access.log;
       error_log /var/log/nginx/forum.error.log;
       location ~ \.php$ {
               fastcgi_split_path_info ^(.+\.php)(/.+)$;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              fastcgi_pass unix:/var/run/php5-fpm.sock;
              fastcgi_index index.php;
              include fastcgi_params;
              fastcgi_intercept_errors on;
              fastcgi_ignore_client_abort off;
       }
       location ~ /\. { deny  all; }
}

 

I wszystko śmiga ;).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam jeszcze pytanko, czy jeśli Cloudflare obsługuje moje DNS'y do domen, to potrzebny mi bind?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×