- How to Fix CodeIgniter Error, “A PHP Error was Encountered”?
- Why Does CodeIgniter, “A PHP Error was Encountered” Appears?
- Steps to Fix the CodeIgniter Error, “A PHP Error was Encountered”
- error_get_last
- Примеры
- Смотрите также
- User Contributed Notes 14 notes
- CodeIgniter a PHP error was encountered – How to tackle it
- What causes CodeIgniter a PHP error was encountered
- How we fix CodeIgniter a PHP error was encountered
- Conclusion
- PREVENT YOUR SERVER FROM CRASHING!
- 4 Comments
How to Fix CodeIgniter Error, “A PHP Error was Encountered”?
CodeIgniter generally shows, “A PHP Error was encountered,” when there are issues in the codes that have been used in the website.
In this article, we will understand the reasons why this CodeIgniter error occurs and the steps to fix it.
Why Does CodeIgniter, “A PHP Error was Encountered” Appears?
Besides, the issues in the website code, there are other reasons this error could be triggered, such as poor code structures or any type of issue with the database server.
When this error encounters, you see an error message in the below format:
A PHP Error was encountered Severity: Warning Message: ini_set(): A session is active. You cannot change the session module's ini settings at this time Filename: Session/Session.php Line Number: 284 Backtrace: File: /home/cPanelusername/public_html/domain.com/application/controllers/Site.php Line: 8 Function: __construct File: /home/cPanelusername/public_html/domain.com/index.php Line: 318 Function: require_once
- Severity: Specifies whether the issue is major or minor. It can be in the form or Notice or Warning.
- Message: Shows information about the nature of the error.
- File Name: The file name which is causing the issue.
- Line Number: The line for checking such error.
Steps to Fix the CodeIgniter Error, “A PHP Error was Encountered”
Here are the steps to fix the CodeIgniter error, “A PHP Error was encountered”:
Open file application/config/config.php and replace http with https like below.
$path = “https://”.$_SERVER[‘HTTP_HOST’].str_replace(basename($_SERVER[‘SCRIPT_NAME’]),””,$_SERVER[‘SCRIPT_NAME’]);
Step 2
In application/config/config.php ; sess_save_path should be set as below. Create ci_sessions directory in application folder in domain’s document root and update ownership
$config[‘sess_save_path’] = APPPATH . ‘ci_sessions/’;
Step 3
In index.php find for session_start(); and comment it as below
//session_start();
Thus by following the above steps, you can fix the CodeIgnitor error, “A PHP Error was encountered”.
Nehal is an ardent content writer. She’s passionate about crafting content that’s simple but adds value. Her insatiable interest in writing has allowed her to explore her skills. She is adept and can write for different types of content formats.
error_get_last
Возвращает ассоциативный массив с описанием последней произошедшей ошибки. Ключи массива: «type», «message», «file» и «line». Если ошибка произошла во внутренней функции PHP, элемент с ключом «message» будет начинаться с имени этой функции. Возвращает null , если ошибок ещё не произошло.
Примеры
Пример #1 Пример использования error_get_last()
Результатом выполнения данного примера будет что-то подобное:
Array ( [type] => 8 [message] => Undefined variable: a [file] => C:\WWW\index.php [line] => 2 )
Смотрите также
- Константы ошибок
- Переменная $php_errormsg
- error_clear_last() — Очистить самую последнюю ошибку
- Директива display_errors
- Директива html_errors
- Директива xmlrpc_errors
User Contributed Notes 14 notes
If an error handler (see set_error_handler ) successfully handles an error then that error will not be reported by this function.
[Editor’s note: as of PHP 7.0.0 there is error_clear_last() to clear the most recent error.]To clear error_get_last(), or put it in a well defined state, you should use the code below. It works even when a custom error handler has been set.
// var_dump or anything else, as this will never be called because of the 0
set_error_handler ( ‘var_dump’ , 0 );
@ $undef_var ;
restore_error_handler ();
// error_get_last() is now in a well known state:
// Undefined variable: undef_var
Function error_get_last() will return an error information even if the error is hidden because you’ve used character @, because of the «error_reporting» directive in the php.ini file, or because you’ve used function error_reporting().
error_reporting ( E_ALL ^ E_NOTICE );
$y = $x ;
$err = error_get_last ();
var_export ( $err );
?>
Will display: array ( ‘type’ => 8, ‘message’ => ‘Undefined variable: x’, ‘file’ => ‘test.php’, ‘line’ => 4, )
$y = @ $x ;
$err = error_get_last ();
var_export ( $err );
?>
Will display: array ( ‘type’ => 8, ‘message’ => ‘Undefined variable: x’, ‘file’ => ‘test.php’, ‘line’ => 4, )
To know if something happened between two statements one can of course use a special string with user_error() (in lieu of a built-in special reset mentioned by mail at mbaierl dot com): @ user_error ( $error_get_last_mark = ‘error_get_last mark’ );
$not_set ;
$error_get_last = error_get_last ();
$something_happened =( $error_get_last [ ‘message’ ]!= $error_get_last_mark ); ?>
If your function returns true then you’ll have to roll you own error_get_last functionality. (Shortly mentioned by dmgx dot michael at gmail dot com).
?php
To manual moderators: Re php.net/manual/add-note.php: Since i guess the above technically sorts under «References to other notes» i feel the need to defend myself with that i’m thinking it might show for usability where other’s say it fails and no, i haven’t got any other medium to reach the readers of the php manual notes.
Also, you could have some examples of what notes you think is okay. Thanks for your moderation.
Like $php_errormsg, the return value of this function may not be updated if a user-defined error handler returns non-FALSE. Tested on PHP 5.2.6.
var_dump ( PHP_VERSION );
// Outputs: string(5) «5.2.6»
@ trigger_error ( «foo» );
$e = error_get_last ();
var_dump ( $e [ ‘message’ ]);
// Outputs: string(3) «foo»
set_error_handler ( create_function ( ‘$a,$b’ , » ));
@ trigger_error ( «bar» );
$e = error_get_last ();
var_dump ( $e [ ‘message’ ]);
// Outputs: string(3) «foo»
set_error_handler ( create_function ( ‘$a,$b’ , ‘return false;’ ));
@ trigger_error ( «baz» );
$e = error_get_last ();
var_dump ( $e [ ‘message’ ]);
// Outputs: string(3) «baz»
?>
The error_get_last() function will give you the most recent error even when that error is a Fatal error.
function handleFatalPhpError () $last_error = error_get_last ();
if( $last_error [ ‘type’ ] === E_ERROR ) echo «Can do custom output and/or logging for fatal error here. » ;
>
>
Beware that registing a shutdown function to catch errors won’t work if other shutdown functions throw errors.
register_shutdown_function ( ‘cleanupObjects’ );
register_shutdown_function ( ‘handleFatalPhpError’ );
function cleanupObjects () trigger_error ( ‘An insignificant problem’ , E_USER_WARNING );
>
function handleFatalPhpError () $last_error = error_get_last ();
if( $last_error [ ‘type’ ] === E_ERROR || $last_error [ ‘type’ ] === E_USER_ERROR ) echo «Can do custom output and/or logging for fatal error here. » ;
>
>
trigger_error ( ‘Something serious’ , E_USER_ERROR );
?>
In the above code, $last_error will contain the warning, becuase cleanupObjects() is called first.
It can’t be completely reset, but you can «clear» it well enough for all practical purposes:
@ trigger_error ( «» );
// do stuff.
$e = error_get_last ();
if( $e [ ‘message’ ]!== » ) // An error occurred
>
?>
To simulate this function in a horrid way for php <5.2, you can use something like this.
if( ! function_exists ( ‘error_get_last’ ) ) set_error_handler (
create_function (
‘$errno,$errstr,$errfile,$errline,$errcontext’ ,
‘
global $__error_get_last_retval__;
$__error_get_last_retval__ = array(
\’type\’ => $errno,
\’message\’ => $errstr,
\’file\’ => $errfile,
\’line\’ => $errline
);
return false;
‘
)
);
function error_get_last () global $__error_get_last_retval__ ;
if( !isset( $__error_get_last_retval__ ) ) return null ;
>
return $__error_get_last_retval__ ;
>
>
?>5.2,>
Be aware that error_get_last() returns only uncaught errors.
Caught ones will never get to the error_get_last(), i.e.:
— $error_levels registered with set_error_handler() when $callback does not return false,
— all exceptions, including errors not supported by set_error_handler() (like :E_ERROR/fatal error, E_PARSE, etc.) that are exceptions in fact,
when set_exception_handler($callback) is registered,
— exceptions caught by try/catch block.
This is a simple debugging script for mail functions.
//Built By Manomite for Debugging
error_reporting ( E_ALL ^ E_NOTICE );
$err = error_get_last ();
$res = «An error has occurred in your application sir.\n Details Include » . $err . «»
mail ( «admin@manomite.net» , «Error Occurred» , $res , $from );
>
>
>
?>
If you have the need to check whether an error was a fatal error before PHP 5.2 (in my case, within an output buffer handler), you can use the following hack:
# Check if there was a PHP fatal error.
# Using error_get_last is the «right» way, but it requires PHP 5.2+. The back-up is a hack.
if ( function_exists ( ‘error_get_last’ )) $lastPHPError = error_get_last ();
$phpFatalError = isset( $lastPHPError ) && $lastPHPError [ ‘type’ ] === E_ERROR ;
> else $phpFatalError = strstr ( $output , ‘Fatal error:’ ) && ! strstr ( $output , ‘