LINUX.ORG.RU

Двоеточия в именах файлов

 ,


0

1

Привет, ЛОР! В порыве ярости сломал сервер, пишу с тостера. Ну как так вообще?

Раз.

root@localhost:/var/www# cat test.php 
<?
$path = '/org/buildd.debian.org/db/l/libpgm/201210111856:5.1.116~dfsg-2/amd64_1349967772_log.bz2';
if (!file_exists($path)) {
  print("Not found: $path\n");
}
else {
  print("Found: $path\n");
}
?>
Два.
root@localhost:/var/www# php -f test.php 
Found: /org/buildd.debian.org/db/l/libpgm/201210111856:5.1.116~dfsg-2/amd64_1349967772_log.bz2
Три.
root@buildd01:/var/www# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /test.php HTTP/1.1
Host: localhost

HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Fri, 12 Oct 2012 10:49:06 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.3.3-7+squeeze14

63
Not found: /org/buildd.debian.org/db/l/libpgm/201210111856:5.1.116~dfsg-2/amd64_1349967772_log.bz2

0

^]
telnet> 

★★★★★

p.s. использовал spawn-fcgi. сейчас из интереса накатил апачу с mod_php5 - та же история.

melkor217 ★★★★★
() автор топика
Ответ на: комментарий от NeOlip

Да, локально под www-data (воркеры нжинкса и cgi от него запускаются) файл находится.

melkor217 ★★★★★
() автор топика
Последнее исправление: melkor217 (всего исправлений: 1)

ага, а веб сервер у тебя тоже от рута запущен?!
давай php -f test.php от имени www-data или как там у тебя..

блин.. тред не читай... (с)

но, всё же, ls -дф бы сюда..

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от melkor217

Вообще идея экранировать спецсимволы правильная, даже если в этом конкретном случае она тебе не помогла.

anonymous
()
mkdir '1:2'
touch 1\:2/123.txt
python3
>>> import os.path
>>> os.path.exists('1:2/123.txt')
True
>>> f =open('1:2/123.txt', 'w')
>>> f.write('php is lame')
11
>>> f.close()
>>> 
cat 1\:2/123.txt 
php is lame
AGUtilities ★★★
()
Ответ на: комментарий от Kuzz

Блин, сам натупил))

Это телнетом нужно файл просить с %3A Спецсимволы обрабатываются как urlencode/urldecode.

Kuzz ★★★
()
Ответ на: комментарий от KRoN73

Подтверждаю -

> php -f test.php
Found: /srv/www/vhosts/frontend/1:2:3:4.txt
> curl office/test.php
Found: /srv/www/vhosts/frontend/1:2:3:4.txt

RR
()
Ответ на: комментарий от anonymous

Вообще идея экранировать спецсимволы правильная, даже если в этом конкретном случае она тебе не помогла.

Двоеточие не тянет на спецсимвол для файлового пути

melkor217 ★★★★★
() автор топика
Ответ на: комментарий от melkor217

Тянет. В оффтопике это разделитель для имени файлового потока. Так что в php могли что нибуть намудрить.

Kuzz ★★★
()
Ответ на: комментарий от melkor217

«Всегда найдется тот, кому не нравится то, что вы делаете. Это нормально. Всем нравятся только котята» © Отто фон Бисмарк

:)

KRoN73 ★★★★★
()

так погоди, может open_basedir срабатывает? или что то подобное

AndreyKl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.