Русские буквы в путях скриптов с апача 2.2

slach

Новичок
Для начала я бы попробовал ПУТЬ задавать в cp1251+URLEncode кодирорке а не в utf-8+URLEncode,
винда все таки
 

x-yuri

Новичок
Для начала я бы попробовал ПУТЬ задавать в cp1251+URLEncode кодирорке а не в utf-8+URLEncode,
винда все таки
что интересно: когда отправляешь apache под windows в utf-8 он открывает в cp1251 (у него же получается статический файл отдать)

1. в чем может быть проблема?
в php. А вот php пытается в utf-8 открыть, ну и не получается у него естественно
 

A1x

Новичок
Eetoe
вообще из вашего вопроса мало что понятно. Во-первых урлы и пути к скриптам - не одно и то же.
У винды вообще русские папки может в СР-866. Оно действительно надо?
 

A1x

Новичок
Для того чтобы использовать русские (китайские) буквы в урлах не обязательно создавать папки с русскими именами в файловой системе.
Это можно делать через mod_rewrite

я предпочитаю использовать в своих веб-проектах директории только с латинскими названиями и даже без пробелов
чтобы не создавать подобных неуловимых проблем ни себе ни другим :)

-----
Вот пробовал для примера создать у себя папку "май" на виртуальном хосте, запускаю в браузере:
http://test/май/index.html

Получаю 404:

Not Found
The requested URL /май/index.html was not found on this server.

Apache/1.3.31 Server at test Port 80
(Win XP sp2, php-2.2.9-2)
 

slach

Новичок
>Вопрос: что я мог такого выкинуть или наоборот недописать в конфиг, что пхп отказывается принимать юникодный путь для скрипта.

это не PHP отказывается принимать юникодный путь до скрипта

это файловое API которое он использует в win32 платформе хочет на вход cp1251 или cp866 а PHP подсовывает ему ваше чертово utf-8

еще раз
ПУТЬ укажите cp1251+URLEncode
 

x-yuri

Новичок
что интересно: когда отправляешь apache под windows в utf-8 он открывает в cp1251 (у него же получается статический файл отдать)
Судя по тому, что ntfs'ные диски в линуксе приходится монтировать с кодировкой utf-8
неправильно я проинтерпретировал результаты своих опытов. Значит apache использует unicode-версии api-функций, поэтому у него получается отдавать статические файлы, а php - не unicode-версии (oem-версии по-крайней мере в рассматриваемой ситуации)

Вот пробовал для примера создать у себя папку "май" на виртуальном хосте...
The requested URL /май/index.html was not found on this server.
Apache/1.3.31 Server at test Port 80
а вот apache 1.3 похоже использует oem-версии, так что в связке apache 1.3+php что-то может получиться, только кодировка, скорее всего, будет - oem (обычно cp866 для русской windows)
 

slach

Новичок
> 3. Кстати, вы, наверное, имели ввиду не "пхп посовывает", а "апачи подсовывает в пхп"?

апач передает все заголовки без изменений и дополнительных перекодировок

только что проверил у себя на Linux Debian + nginx + fast-cgi php5.2.9

locale ru_RU.utf-8

_SERVER["SCRIPT_NAME"] /тест/index.php
_SERVER["REQUEST_URI"] /%D1%82%D0%B5%D1%81%D1%82/index.php
_SERVER["DOCUMENT_URI"] /тест/index.php

поскольку файловая локаль в ext3 стоит UTF-8
и при этом УРЛ браузер кодировал как utf-8+URLEncode

который php нормально раскодировал от URLEncode в просто utf8
и спокойно через файловые вызовы OS обратился к диску

блин вот после таких строк
>1. Устанавливаю Денвер3
мне с вами дискутировать вообще не хочется

ясно же обьяснили вам
php\apache тут непричем... скорее конкретное поведение конкретных ф-ций win32 API которое девелоперы при портировании обычно вообще не учитывают
 
Сверху