Prázdná $basePath na produkčním serveru při updatu Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
twingosh
Člen | 10
+
0
-

Nazdarte,

Včera jsem si stáhnul poslední Nette (Nette Framework 2.0-alpha 2 ze dne 22. 11. 2010) z tohoto webu a rozchodil jsem to na localhostu.

Pokud ale přesunu Nette i na produkční server, kde mi běží funkční web, naskočí mi 404 (měním jen knihovnu, htaccess zůstává stále stejný). Po delším testování jsem zjistil, že mám prázdnou proměnou $basePath.

url na produkci je:

http://www.domena.cz:81/nazev_projektu

Předchozí verze Nette byla (co si pamatuju) někdě z října (taky php5.3 a Nette 2 alfa).

Fakt netuším, kde může být problém.

Díky za rady.

Jan Tvrdík
Nette guru | 2595
+
0
-

Pošli dump $_SERVER

twingosh
Člen | 10
+
0
-

dump $_SERVER:

array(43) {
   "REDIRECT_SCRIPT_URL" => "/muj_projekt/" (8)
   "REDIRECT_SCRIPT_URI" => "http://www.mojedomena.cz:81/muj_projekt/" (31)
   "REDIRECT_HANDLER" => "application/x-httpd-php5" (24)
   "REDIRECT_STATUS" => "200" (3)
   "SCRIPT_URL" => "/muj_projekt/" (8)
   "SCRIPT_URI" => "http://www.mojedomena.cz/muj_projekt/" (28)
   "HTTP_HOST" => "www.mojedomena.cz:81" (16)
   "HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13" (87)
   "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" (63)
   "HTTP_ACCEPT_LANGUAGE" => "cs,en-us;q=0.7,en;q=0.3" (23)
   "HTTP_ACCEPT_ENCODING" => "gzip,deflate" (12)
   "HTTP_ACCEPT_CHARSET" => "windows-1250,utf-8;q=0.7,*;q=0.7" (32)
   "HTTP_KEEP_ALIVE" => "115" (3)
   "HTTP_CONNECTION" => "keep-alive" (10)
   "HTTP_REFERER" => "http://www.mojedomena.cz:81/muj_projekt/front/login/?_fid=ed03" (53)
   "HTTP_COOKIE" => "__utma=196204988.1738788884.1294355872.1295979176.1296516047.4; __utmz=196204988.1294355872.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); PHPSESS ... " (214)
   "HTTP_CACHE_CONTROL" => "max-age=0" (9)
   "PATH" => "/usr/local/bin:/usr/bin:/bin" (28)
   "SERVER_SIGNATURE" => "<address>Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8k Server at www.mojedomena.cz Port 80</address>
" (140)
   "SERVER_SOFTWARE" => "Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8k" (88)
   "SERVER_NAME" => "www.mojedomena.cz" (13)
   "SERVER_ADDR" => "81.91.84.237" (12)
   "SERVER_PORT" => "80" (2)
   "REMOTE_ADDR" => "95.82.189.78" (12)
   "DOCUMENT_ROOT" => "/data/www/virtuals" (18)
   "SERVER_ADMIN" => "praha@web4u.cz" (14)
   "SCRIPT_FILENAME" => "/data/www/virtuals/mojedomena.cz/muj_projekt/index.php" (45)
   "REMOTE_PORT" => "60995" (5)
   "REDIRECT_URL" => "/muj_projekt/index.php" (17)
   "GATEWAY_INTERFACE" => "CGI/1.1" (7)
   "SERVER_PROTOCOL" => "HTTP/1.1" (8)
   "REQUEST_METHOD" => "GET" (3)
   "QUERY_STRING" => ""
   "REQUEST_URI" => "/muj_projekt/" (8)
   "SCRIPT_NAME" => "/muj_projekt/index.php" (17)
   "ORIG_SCRIPT_FILENAME" => "/opt/php-5.3.5/bin/php-cgi" (26)
   "ORIG_PATH_INFO" => "/muj_projekt/index.php" (17)
   "ORIG_PATH_TRANSLATED" => "/data/www/virtuals/mojedomena.cz/muj_projekt/index.php" (45)
   "ORIG_SCRIPT_NAME" => "/php-bin/php-cgi" (16)
   "PHP_SELF" => "/muj_projekt/index.php" (17)
   "REQUEST_TIME" => 1298414307
   "argv" => array(0)
   "argc" => 0
}
David Grudl
Nette Core | 8221
+
0
-

Detekce $basePath se změnila a ta nová se nedokáže správně vypořádat s nastavením tvého serveru. Otázka ale je, jestli je chyba v detekci nebo v nastavení serveru. Tj. je docela možné, že předchozí detekce (přebraná ze Zend Frameworku) byla chybná a správné detekování byl jen vedlejší efekt.

Můžeš se prosím dotázat na admina, jestli je v pořádku, že nastavení DOCUMENT_ROOT neobsahuje část /mojedomena.cz?

Rychlý prozatimní fix by byl přidat do bootstrap:

$_SERVER['DOCUMENT_ROOT'] .= '/mojedomena.cz';
twingosh
Člen | 10
+
0
-

Tak jsem položil server adminovi tvou otázku a v pořádku to podle něj je (viz odpověď níže).

Dobrý den,

DOCUMENT_ROOT je takto nastaven úmyslně. Je možné jej změnit, nicméně by to
znamenalo masivnější zásah do konfigurace. Předpokládám, že Nette bude mít
nějaké konfigurační volby, které upraví cestu instalace (jinak by nebylo
možné řešit situaci, kdy je framework použit v podadresáři například).

Takže to na web4u považují za standard.

Nicméně tvá berlička funguje, takže budu používat zatím ji.

Díky Davide.

Editoval twingosh (23. 2. 2011 12:31)