Я использую php 5.2.6 в AppServ на компьютере с Windows, и PHPExcel, похоже, не работает и не выдает ошибок. У меня error_reporting установлен в E_ALL.
На моей машине с Linux, где я использую php 5.6 и vagrant / homestead, один и тот же код работает просто отлично.
Вот мой код:
http://pastebin.com/6dJC8gaP
Я добавил немного эха, чтобы увидеть, где именно он умирает, и кажется, что он умирает в строке 9. Я подумал, что это может быть проблема с php 5.2 и :: referencing, поэтому я попытался использовать call_user_func, который также работает на моем php 5.6 но не работает на моем php 5.2
http://php.net/manual/en/function.call-user-func.php
<?php
namespace Foobar;
class Foo {
static public function test() {
print "Hello world!\n";
}
}
call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0
?>
На страницу:
Цитата:
В PHP v5.2 вы / можете / используете call_user_func (массив ($ this, ‘parent :: SOME_FUNCTION’)).
Если у вас нет пользовательской функции __autoload (), вы можете идти.
Если у вас есть пользовательский __autoload (), вы должны сделать это «родительским». Что-то вроде:
Обоснование: PHP 5.2 неожиданно пытается автоматически загрузить класс с именем ‘parent’. Однако, если вы ничего не делаете в __autoload () для класса ‘parent’, он будет работать просто отлично.
В PHPExcel / Settings.php есть две ссылки на функцию libxml_disable_entity_loader.
Эта функция недоступна до php 5.2.11, и @ перед ней вызывал тихую ошибку.
Я сделал, как они предложили, и обернул эту функцию в проверках function_exist. Теперь все отлично работает.