developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 10 years ago

Closed 10 years ago

#1101 closed enhancement (fixed)

Version de production et controller qui n'existe pas

Reported by: Nicolas Owned by:
Priority: normal Milestone: Jelix 1.1.7
Component: jelix:controllers Version: 1.1.6
Severity: normal Keywords: page 404, controller
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version: 5.2.6

Description

Sur les sites de production avec jelix gold ou jelix optimized en version 1.6, si dans url on fait appelle à un controller qui n'existe pas nous avons une erreur php au lieu de retour sur la page 404. Voici le code mise en cause : init.php de la version gold à la ligne 882

  private function getController($selector){ 
  $ctrlpath = $selector->getPath();
  require_once($ctrlpath);
  $class = $selector->getClass();

pour avoir la page 404 il faut remplacer par :

private function getController($selector){ 
  $ctrlpath = $selector->getPath();
  if(!file_exists($ctrlpath)){
    throw new jException('jelix~errors.ad.controller.file.unknow',array($this->actionName,$ctrlpath));
  }	
  require_once($ctrlpath);
  $class = $selector->getClass();

il semblerait que cette ligne est été enlevé afin d'améliorer les performances. Cependant je pense qu'il est important que le visiteur tombe sur une page 404 et non une erreur php (ou une page blanche ..).

Change History (7)

comment:1 Changed 10 years ago by laurentj

  • Milestone set to Jelix 1.1.7

comment:2 Changed 10 years ago by foxmask

  • Resolution set to worksforme
  • Status changed from new to closed

bonjour

pour ma part cela fonctionne comme suit :

si un lien quelqu'il soit n'est pas trouvé cela envoi sur le lien defini dans le defaultconfig.ini.php comme suit :

; leave empty to have jelix error messages
notfoundAct="havefnubb~hfnuerror:notfound"
;notfoundAct = "jelix~error:notfound"

Mais probablement que votre config ne contient rien pour cette valeur ce qui retournerait une page blanche ?

comment:3 Changed 10 years ago by foxmask

ps : testé avec la 1.1.6 de jelix optimized

comment:4 Changed 10 years ago by Nicolas

Bonjour,

Hum non, ma config semble correcte. Je viens de refaire des tests afin de me souvenir du problème, mes tests utilisent la version jelix gold 1.6

Url simple: http://dev/index?module=default&action=test:liste

Fatal error: jCoordinator::require_once() [function.require]: Failed opening required '/var/www/dev/sites/../site1/modules/annonce/controllers/test.classic.php' (include_path='.:/var/www/dev/lib') in /var/www/dev/lib/jelix/init.php on line 885

idem avec le moteur basic_significant. Avec un moteur significant le problème ne se pose pas si toutes les urls sont réécrite.

comment:5 Changed 10 years ago by foxmask

  • Resolution worksforme deleted
  • Status changed from closed to reopened

comment:6 Changed 10 years ago by foxmask

j'ai "un probleme" sur les modules aussi :

http://jelix116.localhost/forums.php?module=nicolas&action=default:index

mais ca donne :

[130]   Module "nicolas" inconnu ou désactivé   [...]lib/jelix/init.php       889

correspond chez moi à

		if($gJConfig->checkTrustedModules && !in_array($this->moduleName,$gJConfig->_trustedModules)){
			throw new jException('jelix~errors.module.untrusted',$this->moduleName);
		}

comment:7 Changed 10 years ago by laurentj

  • Resolution set to fixed
  • Status changed from reopened to closed

ok. removed preprocessor conditions around the check of the controller file. fixed.

Note: See TracTickets for help on using tickets.