В отправленном вами URI есть недопустимые символы.

У меня есть проект воспламенителя кода, и я хотел попробовать отладить его с помощью Zend Studio. КОГДА я начинаю отладку, я сразу же запускаю ino

«Отправленный вами URI содержит запрещенные символы».

У кого-нибудь есть идеи?


person Community    schedule 08.12.2008    source источник
comment
Из любопытства, кто-нибудь знает, соответствуют ли разрешенные символы спецификации URI? Очевидно, отказ от ? значит их нет, а как насчет других. Похоже, это еще один пример системы, которая не может должным образом реализовать основы (функциональность на основе RFC).   -  person Rob Williams    schedule 08.12.2008
comment
Я проверил, и PHP НЕ соответствует спецификации URL/URI.   -  person Rob Williams    schedule 17.12.2008
comment
Мы обновили наш сервер до PHP 5.3 и несколько раз сталкивались с этой проблемой из-за старых установок Codeigniter. Вы можете попробовать эту ссылку: riskianawulan.net/2010/11/   -  person felix    schedule 16.04.2012


Ответы (3)


(Предполагая, что вы используете последнюю версию CodeIgniter (CI) 1.7.0)

CI довольно строг в отношении того, какие символы разрешены в URL-адресах. Вы можете изменить регулярное выражение, которое используется для фильтрации URL-адресов.

В system/config/config.php в строке 126 есть

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

Комментарий над этой строкой в ​​значительной степени объясняет все это, а также то, какое сигнальное значение использовать, чтобы обойти этот фильтр и разрешить все символы (т. е. полностью отключить фильтрацию).

С другой стороны, я обнаружил, что CI слишком ограничителен (во-первых, он не разрешает запросы GET и хочет, чтобы все взаимодействия происходили через POST. Я нахожу это абсолютно безумным и сродни выплескиванию ребенка вместе с водой из ванны. Очевидно. , я не единственный, кто считает, что CI является чрезмерно ограничительным, проект Kohana - это форк CI + оптимизации, а именно чистая поддержка php5 (все OO), (CI по-прежнему совместим с PHP4 за счет невозможности принять преимущества возможностей объектно-ориентированного программирования PHP5).

Я предпочитаю Kohana CI, YMMV

http://kohanaphp.com/home

person Cody Caughlan    schedule 08.12.2008
comment
Некоторые символы нельзя добавить в список исключений. Как бы вы ни старались, вы не можете исключить символ #. Вам придется удалить это перед отправкой через http. - person TARKUS; 19.02.2014

Если вы используете старую версию CodeIgniter и PHP 5.4, вам необходимо изменить

if ( ! preg_match("|^[" . preg_quote($this->config->item('permitted_uri_chars')) . "]+$|i", $str)) {

в

if (FALSE === preg_match("|^[" . preg_quote($this->config->item('permitted_uri_chars')) . "]+$|i", $str)) {

in /system/libraries/URI.php

person Stelian    schedule 10.07.2013

в движке Expression вы найдете это в /admin/expressionengine/config/config.php

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

изменить на

$config['permitted_uri_chars'] = ''; 

но прочитайте комментарий к строке, прежде чем сделать это.

Или не используйте ничего на основе CI.

person Andreas    schedule 05.08.2013
comment
Из Документов: Оставьте пустым, чтобы разрешить использование всех символов, но только если вы ненормальны - person Mohammed Joraid; 12.10.2014