phpexcel — Classes / PHPExcel_Shared_String.php): не удалось открыть поток

Этот вопрос был задан в 2010 году. Я вижу связанную проблему, но рекомендуемые решения 2010 года не решают ее.

Я использую PHPExcel v 1.8.0 (март 2014)

Предложения, сделанные в исходном ответе, были включены, и остальная часть системы все еще работает нормально, например, у меня есть файл init.php, который вводится для каждого скрипта, который включает в себя следующее, как предлагалось в предыдущем посте:

function myAutoload($Class)
{
require_once 'Classes/' . $Class . '.php';
}
spl_autoload_register('myAutoLoad')

Все файлы {classes.php} находятся в папке Classes / вне корневого каталога документа, включая, конечно, PHPExcel.php. Папка PHPExcel также содержится в папке Classes /.

Я пробовал разные способы раскрутки PHPExcel, включая обычный

$spreadsheet = new PHPExcel;

В качестве альтернативы я также попытался определить класс Spreadsheet

Class Spreadsheet extends PHPExcel {.... }

Все они выдают ту же ошибку, что и вырезать и вставить в вышеупомянутый

Я успешно перенес остальную часть процессов в приложении из процедурного стиля в объектно-ориентированную систему, и это стоило того, чтобы потратить на него недели. Это последнее препятствие с PHPExcel, однако, заставило меня одурачить!

Мы ценим любые предложения

1

Решение

Измените ваш автозагрузчик так, чтобы он возвращал false, если он не может загрузить указанный файл:

function myAutoload($Class)
{
if (file_exists('Classes/' . $Class . '.php')) {
require_once 'Classes/' . $Class . '.php';
return true;
}
return false;
}

Таким образом, автозагрузка будет осуществляться через ваш собственный автозагрузчик и запускать следующий автозагрузчик в «очереди» (автозагрузчик PHPExcel), если он не найдет запрошенный файл через ваш собственный автозагрузчик. Если вы не вернете false обработчик автозагрузчика SPL не потрудится работать через любые другие автозагрузчики «в очереди»

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]