A PHP fatal error is a severe error that causes a script to terminate immediately. This type of error stops the execution of a script, leading to the display of an error message. PHP fatal errors can be caused by a variety of issues, such as calling undefined functions or missing classes. Here are some common causes of fatal PHP errors, explanations, and examples of fixing them.
1. Call to Undefined Function
- Cause: This occurs when trying to call a function that doesn’t exist in the script. It could be due to a typo, a missing function, or an incorrect import of an external library.
- Error Message: Fatal error: Uncaught Error: Call to undefined function myFunction()
<?php
myFunction(); // Calling a function that doesn't exist
?>
Example:Fix: Make sure the function is defined before calling it or include the file where the function is defined.
<?php
function myFunction() {
echo "Hello, World!";
}
myFunction(); // Now the function exists
?>
2. Class Not Found
- Cause: This error occurs when trying to use a class that hasn’t been defined or included in the script.
- Error Message: Fatal error: Uncaught Error: Class ‘ClassName’ not found
Example:
<?php
$obj = new MyClass(); // MyClass is not defined
?>
Fix: Ensure the class is defined, or include/require the file where the class is defined.
<?php
class MyClass {
public function __construct() {
echo "MyClass instantiated!";
}
}
$obj = new MyClass(); // Now the class exists
?>
3. Out of Memory
- Cause: This happens when a script tries to allocate more memory than is allowed by the PHP configuration (memory_limit).
- Error Message: Fatal error: Allowed memory size of X bytes exhausted
Example:
<?php
$array = [];
for ($i = 0; $i < 10000000; $i++) {
$array[] = str_repeat('A', 1000); // Trying to allocate a large amount of memory
}
?>
Fix: Increase the memory limit in the php.ini file or optimize the script to use less memory.
// Increase memory limit
ini_set('memory_limit', '256M'); // Example to increase to 256MB
4. Using Too Few or Too Many Function Arguments
- Cause: Calling a function with the wrong number of arguments (too few or too many) can cause a fatal error if the function is defined to require specific parameters.
- Error Message: Fatal error: Uncaught ArgumentCountError: Too few arguments to function functionName()
Example:
<?php
function add($a, $b){
return $a + $b;
} echo add(5); // Missing the second argument
?>
Fix: Make sure to provide the correct number of arguments.
<?php
echo add(5, 10); // Now providing two arguments
?>
5. Cannot Redeclare Function or Class
- Cause: This occurs when trying to declare a function or class that has already been declared.
- Error Message: Fatal error: Cannot redeclare functionName()
Example:
<?php function
myFunction() {
echo "Hello!";
}
function myFunction(){ // Redeclaring the same function
echo "Hello again!";
}
?>
Fix: Use function_exists() or class_exists() to check before redeclaring, or use include_once/require_once to prevent multiple inclusions.
<?php
if (!function_exists('myFunction')) {
function myFunction() {
echo "Hello!";
}
}
?>
6. Incompatible PHP Version
- Cause: Some functions, classes, or features may not be available in older PHP versions
- Error Message: Fatal error: Uncaught Error: Call to undefined function or class
Example:
<?php
// Using a function introduced in PHP 7.1
$result = array_key_first(['a' => 1, 'b' => 2]);
?>
Fix: Update the PHP version or use an alternative compatible approach.
// For older versions, use a workaround for array_key_first
function array_key_first($array) {
foreach ($array as $key => $unused) {
return $key;
}
return null;
}