Xpoint
   [напомнить пароль]

Чтение файла по сети

Метки: [без меток]
2010-09-03 10:57:28 [обр] Павел Матвеев[досье]
Hi all.
Требуется считать текстовый файл из сетки с адреса:
\\192.168.0.6\sht\file.txt
функция file_exists() говорит, что не найден файл. File() соответственно тоже.
Я уже и двойные слеши прописывал и file:/// впереди писал - не хочет.
Если этот путь вставить в проводнике в адресную строку - файл открывается норм. (т.е. права на чтение есть). В php.ini включена опция allow_url_fopen.
Собственно скрипт выглядит у меня так:
<?php
$f="\\\\192.168.0.6\\sht\\file.txt";
if (!file_exists($f)){echo "нет файла";} else {$f=file($f); echo sizeof($f);}
?>
Поднимать веб-сервер чтоль на удаленной машине, чтобы адрес начинался с http: или подлючать удаленный диск? Как-то не хотелось бы.
Подскажите где я ошибаюсь плз?
ps: поиском пользовался. Все почему то юзают или локальные файлы или из инета.
спустя 18 минут [обр] Амир(0/4)[досье]
В винде наверное ? Я бы попробывал браузером файл открыть, посмотрел бы адресную строку и попытался бы этот адрес ввести в параметр url, функции file или file_get_contents.
спустя 25 секунд [обр] Алексей Севрюков(162/1280)[досье]
Павел Матвеев[досье] вообще, на странице Filesystem wrapper есть упоминание про поддержку smb, т.е. сетевое чтение файлов поддерживается. Страница file_exists так же указывает на возможность опеределния существования файла по сети.
Возникает вопрос, какие операционные системы Вы используете на локальной машине (откуда запускаете скрипт) и на сервере (откуда пытаетесь считать файл).
спустя 40 минут [обр] Павел Матвеев[досье]

Амир[досье] если в браузере (IE) открыть данный файл, да и вообще любой файл в локальной сети, он автоматически перезапускается как проводник. А в проводнике файл прекрасно открывается. Права на чтение/запись есть. Если открывать в опере адрес: \\192.168.0.6\sht\file.txt
то он преобразуется в: file://192.168.0.6/sht/file.txt
Поставляя в скрипт (см.выше) этот адрес пишет, что нет файла.

Алексей Севрюков[досье] извините, упустил совсем из вида. Виндовс ХР сервис пак 3 стоит и там и там. Версия пхп 4.0.4 Apache/1.3.6 (Win32)

из ссылки на Filesystem wrapper я так понял, что allow_url_fopen вообще никак не влияет ? или эту опцияю надо было выключить? она у меня сейчас включена.
Я вот думаю, что где-то еще есть настройки, которые разрешают/запрещают работу с удалёнными файлами. Пока ищу вот...

спустя 8 минут [обр] Леонид Сысолетин(4/14)[досье]
Права у юзера, из-под которого работает сервер, позволяют достучаться до файла?
спустя 5 минут [обр] Павел Матвеев[досье]
апач запущен от имени SYSTEM
php.exe запускается кратковременно, только на время работы скрипта. Как узнать от какого имени он заупскается?
спустя 3 часа 50 минут [обр] Алексей Полушин(62/231)[досье]
Если РНР из апача запускается, то под тем же аккаунтом.
http://ru2.php.net/manual/en/function.get-current-user.php
спустя 16 часов [обр] Павел Матвеев[досье]
php запускается под пользователем SYSTEM.
На своем компе (тоже винХП) запустил апач под пользователем Mips, php запустился тоже под мипсом. На удаленном компе (откуда читаю файл) есть пользователь Mips (с админскими правами).
Получается интересная штука: В опере вставляю в адресную строку
file://192.168.0.6/sht/file.txt - файл открывается без вопросов, адрес остается тот же. В IE вставляю этот адрес и адрес заменяется на \\192.168.0.6/sht/file.txt и тоже открывается.
Вставляю в скрипт:
$f="file://192.168.0.6/sht/file.txt";
$a=file($f);
 пишет следующее:
Warning: file("file://192.168.0.6/sht/file.txt") - Invalid argument in z:\www\hs~kodir.php on line 25
Или когда $f='\\\\192.168.0.6\\sht\\file.txt';
Warning: file("\\192.168.0.6\sht\file.txt") - No such file or directory in z:\www\hs~kodir.php on line 25
Повторюсь: Апач и пхп запускается под юзером Mips с паролем из цифр. Акк админский и там и там. В проводнике этот удаленный файл с моего компа открывается без вопросов.
В чём же проблема то? подскажите плз.
спустя 1 минуту [обр] Павел Матвеев[досье]
извиняюсь, ... адрес заменяется на \\192.168.0.6\sht\file.txt
хотя, это не столь важно
спустя 2 дня 6 часов [обр] Леонид Сысолетин(4/14)[досье]
Варианты:
  1. попробовать file: и удвоенные слеши (четыре в начале и по два между частями пути)
  2. попробовать выполнить команду из php (exec, shell,..)
  3. почитать http://lmgtfy.com/?q=php+fopen+smb+shares
спустя 1 год 5 месяцев [обр] Павел Матвеев[досье]

Много воды утекло с тех пор... проблему я решил подключением сетевого диска Y:
РНР версии 4.0.6 работало с файлами типа: $a=file("Y:\\folder\\file.txt");
Теперь у меня Win7pro x64, так же подключаю диск Y:, в проводнике диск открывается, файлы читаются норм. В командной строке тоже всё открывается, а вот пхп почему то диск Y: напрочь отказывается видеть.
PHP Version 5.2.5 (x64)
Apache 2.2.19 (x64)

allow_url_fopen=On

спустя 2 часа 19 минут [обр] Павел Матвеев[досье]
Разобрался я таки в чем дело. Апач у меня запущен как служба. По умолчанию многие службы запускаются от имени LocalSystem, которые не дают возможности работы по сети.
Т.о. я у службы "Apache2.2" в свойствах на вкладке "вход в систему" прописал входить под моей учетной записью и моим паролем. Теперь апач запускается от моего имени и file("\\\\192.168.0.6\\folder\\file.txt") работает на ура.
ps: Но это при условии, что на удаленном компе либо открыт гостевой доступ, либо моей учётке разрешено залезать в эту папку из сети.
Powered by POEM™ Engine Copyright © 2002-2005