Прочитать файл на сетевом диске

Я запускаю Xampp на Windows Server; Apache работает как служба с локальной учетной записью. На этом сервере сетевой ресурс монтируется как X: с определенными учетными данными.

Я хочу получить доступ к файлам, расположенным на X: и запустить следующий код

<?php echo shell_exec("whoami"); fopen('X:\\text.txt',"r"); ?> 

и получить

 theservername\thelocaluser Warning: fopen(X:\text.txt) [function.fopen]: failed to open stream: No such file or directory 

Я пытался запустить Apache, а не как сервис, но напрямую, запустив httpd.exe … и код работал.

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

    Related of "Прочитать файл на сетевом диске"

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

    Вместо этого вы можете использовать UNC-путь, например:

     fopen('\\\\server\\share\\text.txt', 'r'); 

    Обратите внимание, однако, что есть несколько проблем с доступом к файловой системе PHP для UNC-путей. Одним из примеров является ошибка, которую я подал для imagettftext , но есть также проблемы с file_exists и is_writeable . Я не сообщил об этом последнему, потому что, как вы можете видеть из моей давно выдающейся ошибки с imagettftext , в чем смысл.

    Для общих сетевых ресурсов следует использовать имена UNC: "//server/share/dir/file.ext"

    Если вы используете IP-адрес или имя хоста, он должен работать нормально:

     $isFolder = is_dir("\\\\NAS\\Main Disk"); var_dump($isFolder); //TRUE $isFolder = is_dir("//NAS/Main Disk"); var_dump($isFolder); //TRUE $isFolder = is_dir("N:/Main Disk"); var_dump($isFolder); //FALSE