для первого упоминания, этот вопрос является расширением моего предыдущего вопроса Вот.
И моя цель все та же. У меня есть сервер IIS7 (где я использую PHP) на сетевом диске (диск 1), когда я пытаюсь получить доступ к другому сетевому диску (диск 2), где необходимо получить доступ к файлам PDF с pdftotext.exe.
На диске 1 у меня также есть виртуальный каталог / каталог (virDir) в каталоге (tarDir) на диске 2, когда хранятся все файлы, к которым мне нужен доступ.
Когда я запускаю pdftotext.exe сам, все работает как шарм, на диске 1 создается выходной файл с pdfcontent, и все живут счастливыми до смерти. Но когда я пытаюсь выполнить скрипт PHP, хранится на диске 1 в virDir, который запускается pdftotext.exe с помощью команды exec возвращает 1, и файл не создается.
В моем последнем вопросе я понял, что это, вероятно, проблема с разрешениями, но я немного запутался, как их установить. У IIS7 есть несколько внутренних пользователей, таких как IUSR и IIS_IUSRS, и когда я звоню get_current_user();
в php он установлен на testUser.
Итак, какие разрешения мне нужно установить для обоих каталогов (virDir и tarDir), чтобы сервер мог получить к ним доступ?
Я пытался, чтобы testUser установил права «Изменить», «Чтение», «Содержимое папки», «Чтение», «Запись» на tarDir (диск 2), а IUSR, «testUser» и «II_IUSRS» имеют права «Чтение», «Список содержимого папки», «Чтение», «Запись» на tarDir (диск). 1).
Когда я пытаюсь получить доступ к «нормальным» файлам, таким как txt, pptx и т. Д., Я могу читать их без проблем (я использую для этого библиотеку php), но когда я пытаюсь использовать pdftotext.exe, это не удается.
Может кто-то видит, что я делаю не так?
РЕДАКТИРОВАТЬ:
Так что я сделал еще одно тестирование, и когда я запускаю эту команду (я currious, кто запускает командную строку)
echo "<br> who am i in command line? <br>";
$out = array();
exec('cmd /c whoami 2>&1',$out,$exitcode);
echo "<br />EXEC: ( exitcode : $exitcode )";
echo "<hr /><pre>";
print_r($out);
echo "</pre>";
Запущенный на диске 1, он показывает, что командная строка запускается testUser, но когда я запускаю ее на диске 1 virDir, он возвращает 1. Так что, вероятно, возникнут проблемы с разрешениями на выполнение команд в оболочке … Я придумаю любой намек …
Так что, похоже, проблема была не в разрешениях (я установил permisions для обоих каталогов на testUser, и все равно получаю ту же ошибку), но когда я переместил pdftotext.exe в виртуальный каталог, и теперь он выглядит так, как будто он работает. Но мне любопытно, почему …
Используйте разрешение как «Все», чтобы к каталогу можно было обращаться без проблем.
шаги:
Недавно я столкнулся с той же проблемой, вышеуказанный шаг решил ее