Yii w home.pl

Witam.

Czy ktoś próbował uruchamiać aplikacje oparte na Yii na serwerach home.pl? Mam z tym pewien kłopot. Otóż aplikacja wywołana bez index.php w adresie zwraca błąd 500, natomiast jeśli umieszczę index.php otwiera mi się poprawnie domyślna akcja domyślnego kontrolera. Kopałem sieć, fora, ale nic nie znalazłem. Pozdrawiam,

Hubert

Cześć,

nie masz może pliku .htaccess? Może tam coś jest nie tak?

Próbowałem z .htaccess i bez niego. Nie ma to znaczenia. Robiłem debug krok po kroku i zauważyłem, że kiedy kod dochodzi do CWebApplication->resolveRequest(), to w różny sposób wyświetla błąd 500. Kiedy wywołuję bez index.php, błąd wygląda jak zwykła strona błędu z Apache. Ale wywołanie z index.php w URL pokazuje błąd 500 w szablonie Yii. To na razie wszystko co udało mi się osiągnąć.

Przy wywołaniu bez index.php w URL Apache zwraca:

$_SERVER['SCRIPT_NAME'] = /index.php

$_SERVER['PHP_SELF'] = /index.php

Natomiast IdeaWebServer, który pracuje w home.pl zwraca odpowiednio:

$_SERVER['SCRIPT_NAME'] = /

$_SERVER['PHP_SELF'] = /

To jest przyczyną błędu. Teraz trzeba to jakoś obejść.

Może zrobić tak.

Oryginalny plik index.php zmienić na index2.php, natomiast w pliku index.php napisać kod, który sprawdza

$_SERVER['SCRIPT_NAME'] = /

$_SERVER['PHP_SELF'] = /

i przekierowuje na plik index2.php

Podobny problem miałem swego czasu z PRADO na serwerach home. Obszedłem go następująco:



$find = null;


$find = strchr($_SERVER['SCRIPT_NAME'],'index.php');





if ($find == false) {


  $_SERVER['SCRIPT_NAME'] .= 'index.php';


}


poszło bez problemu z takim kodem w index.php:



<?php





// change the following paths if necessary


$yii='/yii/yii.php';


$config='/admin/protected/config/main.php';





// remove the following line when in production mode


#defined('YII_DEBUG') or define('YII_DEBUG',true);





require_once($yii);





$app=new CWebApplication($config);


$app->request->setScriptUrl('/admin/');


$app->request->setBaseUrl('/admin/');


$app->run();





?>


Trzeba dodac jednego malego ifa do index.php i chodzi:

if($_SERVER[‘SCRIPT_NAME’] == ‘/’)

&#036;_SERVER['SCRIPT_NAME'] = '/index.php';