Доступ к Windows Share с помощью PHP
Мне нужно получить доступ к файлу Excel на Windows Share с помощью PHP, но похоже, что он сталкивается с проблемой аутентификации.
Я использую PHP-ExcelReader, чтобы открыть и прочитать файл. Прекрасно работает на моей локальной машине, но сервер, на котором я его устанавливаю, не имеет прав на доступ к этой папке, поэтому он говорит мне, что путь не читается!
Я даже не уверен, что путь для доступа к этой папке правильный:
$file_to_include = "\\\\10.9.8.7\depts$\ExcelFile.xls";
Но это работает на моей машине, как я уже сказал, я доволен этим.
Можно ли как-нибудь добавить свои учетные данные здесь где-нибудь?
3 ответа
Путь \\10.9.8.7\depts$\ExcelFile.xls должен быть доступен локально, поскольку PHP не поддерживает smb.
РЕДАКТИРОВАТЬ: по крайней мере, не изначально, попробуйте smb4php
Просто для дополнительной информации, поскольку вышеупомянутый класс (smb4php) устарел и большинство используемых функций устарели.
Ваш путь правильный.
Одна вещь, которую вы можете попробовать, - это предоставить общий доступ к диску на сервере, а затем сопоставить общий диск на каждом компьютере пользователя (убедитесь, что они имеют одинаковую букву диска или имя) или только ваш компьютер. Если это не слишком много, компьютеры пользователей будут лучше, если вы не работаете или забыли пройти аутентификацию. Таким образом, когда пользователь аутентифицируется, он открывает диск. Затем вы можете вызвать диск через что-то вроде:
$file_to_include = '\\\\'.$_SERVER['REMOTE_ADDR'].'\mappedDrive\file.xls';
Ваш путь правильный, но имейте в виду, что обратная косая черта $ amd является специальным символом в php при использовании двойных кавычек.
Итак, вы можете написать:
$file_to_include = '\\10.9.8.7\depts$\ExcelFile.xls';
или вы используете двойные кавычки, но добавляете дополнительную обратную косую черту перед специальными знаками
$file_to_include = "\\\\10.9.8.7\depts\\\$\\ExcelFile.xls";
или вы просто используете косую черту в качестве разделителя каталогов, но доллар все равно должен быть экранирован
$file_to_include = "\\\\10.9.8.7/depts/\$/ExcelFile.xls";
Об authdata: если вы запускаете файл php, он обычно наследует разрешения начального процесса. Это означает, что если вы уже сохранили аутентификацию для этого общего ресурса в своем проводнике и запускаете php, файл php наследует эти уже сохраненные разрешения.
Но не забывайте, когда вы запускаете php на веб-сервере, этот веб-сервер, возможно, работает под другим пользователем, у которого нет таких же разрешений, как у вашего текущего пользователя, вошедшего в систему.