Я работаю на сервере с
ubuntu 14.04
php 5.3.10.
apache 2.2.22
это настройки ошибок php.ini:
display_errors = off
error_reporting = E_ALL & ~E_DEPRECATED
apache-версия php.ini отличается от cli-версии некоторыми отключенными функциями:
pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
вот мой код:
<?
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
ini_set('error_log','/tmp/php_errors_'.$_SERVER['SERVER_NAME'].'.log');
abstract class master
{
abstract public function metodo ();
}
class slave extends master
{
function __contruct()
{
echo "HI!";
}
}
$b = new slave();
из CLI я получу эту ошибку ():
PHP Fatal error: Class slave contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (master::metodo) in /home/lbarby/prova.php on line 13
но, запустив тот же скрипт из apache, я получаю пустую страницу!
В чем дело?
Любой совет?
ОБНОВИТЬ
Чтобы быть ясным: моя проблема в том, что я не понимаю, почему PHP под Apache не показывает никаких ошибок, в то время как из CLI (как и ожидалось!).
РЕШИТЬ
Я нашел решение: вместо использования буквального значения вы должны использовать числовые (см. Предопределенную константу на php.net).
Очередь display_errors вкл. Если он выключен, он ничего не показывает.
Других решений пока нет …