Ситуация: В настоящее время я выполняю миграцию внутреннего отраслевого веб-приложения с Windows Server 2003 / Apache 2.2 / Php 5.3 / Oracle 10 на Windows Server 2012 / Apache 2.4 / PHP 5.5 / Oracle 12c.
Приложение использует расширение com_dotnet для использования установленной на стороне сервера Excel для специальных отчетов. Я знаю, что использование Excel на стороне сервера не является предпочтительным способом работы с листами, но когда-то было решено сделать это, потому что
Проблема в деталях: PHP создает объект Excel ОК:
try {
$excel = new COM("Excel.application");
$excel->DisplayAlerts = 0;
$excel->Visible = 0;
} catch (Exception $e) {
...
}
Но когда я пытаюсь открыть файл, я получаю сообщение об ошибке:
try {
$excel->Workbooks->Open($fn);
} catch (Exception $e) {
$excel->Quit();
$excel = null;
// ... Errormessage ...;
return;
}
Сообщение об ошибке (в $ e) гласит, что Excel не смог найти или открыть запрошенный файл. Во время отладки с Netbeans я вижу, как экземпляр Excel появляется в диспетчере задач Windows.
Что я пробовал:
К сожалению, установка на немецком языке, так что сообщение об ошибке:
Источник: Microsoft Excel
Описание: Microsoft Excel может быть датирован. \ Apps \ webroot \ vebill \ share \ reports \ Test.xls ‘nicht zugreifen. Умирает Канн Мехрере Грюнде Хабен:
Ни одно из этих условий не соответствует действительности.
Помощь очень appeciated! Спасибо!
Что я забыл упомянуть является то, что старая установка использовала Excel 2010, новая использует Excel 2016.
Что я узнал с Procmon: Как и предполагалось, я использовал procmon и фильтровал для событий EXCEL.EXE. EXEL создает файл и открывает запрос информации, и все следующие операции над файлом имеют РЕЗУЛЬТАТ УСПЕХА! Только одна строка может указывать на ошибку:
18: 43: 22,9966615
EXCEL.EXE
5916
CreateFileMapping
D: \ приложения \ Webroot \ vebill \ доля \ сообщает \ test.xls
ФАЙЛ ЗАБЛОКИРОВАН ТОЛЬКО С ЧИТАТЕЛЯМИ
SyncType: SyncTypeCreateSection, PageProtection:
Но позже в журнале файл снова обращается к Excel несколько раз без каких-либо ошибок.
Обновление 1: Я изменил регистрационные данные службы Apache на пользователя с правами администратора, с которым я работаю — ошибка остается той же: Led Zeppelin alredy знал 😉
Обновление 2: Обнаружена эта проблема, моя дубликат, к сожалению, это также не решено. Попробую перейти на PHPExcel сейчас …
Задача ещё не решена.
Других решений пока нет …