CodeIgniter 1.7 et passage à PHP 5.3

Ayant migré mon site sur PHP 5.3 (migration proposée par Infomaniak, qui héberge mon blog et mon site), je me suis rendu compte de quelques problèmes avec mon site fonctionnant sous CodeIgniter 1.7. L’erreur suivante apparaissait à la place des pages:

The URI you submitted has disallowed characters

La cause ? Tel que mentionné dans la source, avec PHP 5.3, le symbole « – » (trait d’union) est échappé par la fonction preg_quote avec un antislash. Du coup, les expression du type “a-z 0-9″ sont converties vers “a\-z 0\-9″ ce qui rend la regex invalide.

Comme indiqué dans la source, il y a deux fichiers à modifier:

  1. system/libraries/URI.php ligne 189:
    1
    if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", rawurlencode($str)))

    Remplacer par:

    1
    if ( ! preg_match("|^[".($this->config->item('permitted_uri_chars'))."]+$|i", rawurlencode($str)))
  2. system/application/config/config.php ligne 126:
    1
    $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';

    Remplacer par:

    1
    $config['permitted_uri_chars'] = 'a-z 0-9~%\.\:_\-';

Ca pourra éventuellement vous servir étant donné que PHP 5.3 commence à être mis en place par les hébergeurs.
Concernant le site, CodeIgniter 1.7 restera le framework de base en attendant la version Symfony 2 que je dois encore tester. Il devrait ensuite contenir un peu plus de choses intéressantes.

Source: http://davidmichaelthompson.com/2009/09/03/fixed-the-uri-you-submitted-has-disallowed-characters-error-codeigniter/

About Ludovic

Ingénieur en informatique dipl. EPFL
Cette entrée a été postée dans la catégorie PHP et taggée , . Ajouter le permalink aux favoris.

Comments are closed.