Я создал вопрос на serverfault.com, и мне было рекомендовано задать его здесь.
https://serverfault.com/questions/140669/why-cant-php-script-write-a-file-on-server-2008-via-command-line-or-task-schedul
У меня есть скрипт PHP. Это работает хорошо, когда я использую браузер. Он записывает файл XML в тот же каталог. Выполнение сценария занимает ~ 60 секунд, а результирующий файл XML - ~ 16 МБ.
Я использую PHP 5.2.13 через FastCGI в 64-разрядной версии Windows Server Web SP1.
Код извлекает данные инвентаризации с сервера SQL, запускает цикл для создания файла XML для третьей стороны.
Я создал задачу в планировщике задач для запуска c: \ php5 \ php.exe "D: \ inetpub \ tools \ build.php"
Планировщик задач показывает промежуток времени около минуты, то есть, сколько времени требуется скрипту для запуска в браузере.
Ошибка не возвращается, но файл не создан.
Каждый раз, когда я изменяю свойства запланированной задачи, появляется окно с паролем пользователя, и я ввожу пароль учетной записи администратора.
Если я запускаю этот же путь и аргумент в командной строке, это не приводит к ошибке и не создает файл.
Когда я щелкаю правой кнопкой мыши команду запуска командной строки от имени администратора, файл все равно не создается. Я получаю свое эхо-утверждение «файл опубликован», то есть после создания файла, и ошибка не возвращается.
Я делаю простой fopen fwrite fclose, чтобы сохранить содержимое переменной php в файл .xml, и этот файл создается только при запуске сценария через браузер.
Вот что происходит после цикла построения xml:
$feedContent .= "</feed>";</p>
<pre><code>sqlsrv_close( $conn );
echo "<p>feed built</p>";
$feedFile = "feed.xml";
$handler = fopen($feedFile, 'w');
fwrite( $handler, $feedContent );
fclose( $handler );
echo "<p>file published</p>";
Спасибо