SplEnum не загружается автоматически в apache — работает в CLI

У меня возникли проблемы с автоматической загрузкой написанного мной класса, который расширяет SplEnum. Я успешно установил Spl_Types.

Как ни странно, класс автоматически загружается при запуске через интерфейс командной строки. Однако у меня возникают проблемы при запуске скриптов через apache.

Класс определяется следующим образом:

<?php
namespace base\main\domain;
use SplEnum;
/**
 * Represents a colour.
 *
 **/
class Colour extends SplEnum {
...

Выполнение этого:

spl_autoload_register(array($autoLoader, 'autoLoad'));
spl_autoload_register('spl_autoload');
$colour = new base\main\domain\Colour(base\main\domain\Colour::BLACK);

Дает:

Неустранимая ошибка: класс 'SplEnum' не найден в [...] Colour.php в строке 8

Я запустил phpinfo() через apache и проверил, что указанный файл php.ini включает расширение spl_types, но все равно без радости.

Я был бы очень признателен за любую помощь, которую вы могли бы предложить с этим.

Спасибо,

Росс


person Ross McFarlane    schedule 04.08.2011    source источник
comment
возможный дубликат: stackoverflow.com/questions/6846395/   -  person marcelog    schedule 04.08.2011
comment
Это не дубликат другой проблемы. Как я сказал выше, я успешно установил SPL_Types и могу загрузить класс в других обстоятельствах. Эта проблема связана с различиями в автозагрузке между CLI и Apache.   -  person Ross McFarlane    schedule 05.08.2011


Ответы (2)


Я столкнулся с этой же проблемой, но, похоже, нужен был простой service httpd restart.

SPL_TYPES используется из https://github.com/davidcoallier/SPL_Types.

Скомпилировано с:

tar xvf SPL_Types-0.3.1.tgz
cd SPL_Types-0.3.1
phpize
./configure
make
make test
make install

echo -e "; Enable spl_types extension module\nextension=spl_types.so" > /etc/php.d/spl_types.ini
service httpd restart 
person ChrisFeilen    schedule 07.01.2012

Ты пытался:

class Colour extends \SplEnum {
person Martin Gallagher    schedule 05.08.2011
comment
У меня есть сейчас. Боюсь, без радости. - person Ross McFarlane; 05.08.2011