PHP는 웹 개발에 널리 사용되는 강력한 스크립트 언어이지만 다른 언어와 마찬가지로 디버그하기 어려울 수 있는 오류가 발생하기 쉽습니다. 일부 오류는 간단하고 수정하기 쉽지만 일부 오류는 좀 더 복잡할 수 있습니다. 이 문서에서는 가장 일반적인 PHP 오류 중 일부를 다루고 이러한 오류를 신속하게 해결하는 데 도움이 되는 솔루션을 제공합니다.
PHP 인터프리터가 예상 구조와 일치하지 않는 코드를 발견하면 구문 오류가 발생합니다. 이는 가장 기본적인 오류 유형이며 구문 오류, 예상치 못한 토큰 메시지 등 무서운 구문 분석 오류가 발생하는 경우가 많습니다.
echo "Hello World" // Missing semicolon
코드에 구두점이 없거나 추가되었는지 다시 확인하세요. 열고 닫는 괄호, 대괄호, 따옴표가 모두 일치하는지 확인하세요.
echo "Hello World"; // Fixed
초기화되지 않은 변수를 사용하려고 하면 '정의되지 않은 변수' 오류가 발생합니다. 이 경우 PHP는 주의: 정의되지 않은 변수 오류를 발생시킵니다.
echo $username; // Undefined variable
코드에서 변수를 사용하기 전에 변수가 초기화되었는지 확인하세요. isset()을 사용하여 변수가 설정되었는지 확인하여 이 알림을 억제할 수도 있습니다.
if (isset($username)) { echo $username; } else { echo "No username provided"; }
이 오류는 정의되지 않은 함수를 호출하려고 할 때 발생합니다. 함수 이름의 철자를 잘못 입력했거나 함수가 포함된 필수 파일을 포함하는 것을 잊었기 때문에 발생할 수 있습니다.
myFunction(); // Undefined function
함수가 스크립트에 올바르게 정의되었거나 포함되어 있는지 확인하세요. 그리고, 함수명에 오타가 있는지 확인해보세요.
function myFunction() { echo "Hello World!"; } myFunction(); // Fixed
이 오류는 출력이 이미 브라우저에 전송된 후 PHP가 헤더(예: header() 또는 setcookie() 사용)를 수정하려고 시도할 때 발생합니다. 오류 메시지는 일반적으로 다음과 같습니다. 경고: 헤더 정보를 수정할 수 없습니다. 헤더가 이미 전송되었습니다...
echo "Some output"; header("Location: /newpage.php"); // Causes error because output was already sent
header() 함수가 호출되기 전에 출력(공백 또는 BOM 포함)이 전송되지 않는지 확인하세요. 사용자를 리디렉션해야 하는 경우 출력이 생성되기 전에 header()가 호출되는지 확인하세요.
header("Location: /newpage.php"); // This must appear before any echo or print statements exit();
PHP 스크립트에 파일이나 디렉터리에 액세스할 수 있는 적절한 읽기 또는 쓰기 권한이 없을 때 권한 오류가 발생합니다. 경고: fopen(/path/to/file): 스트림을 열지 못했습니다: 권한이 거부되었습니다.
와 같은 오류가 표시될 수 있습니다.파일 및 디렉터리 권한을 확인하세요. 일반적으로 웹 서버 사용자는 파일에 대한 읽기 권한과 업로드 또는 파일 조작이 발생하는 디렉터리에 대한 쓰기 권한이 있어야 합니다. 권한을 조정하려면 다음 명령을 사용하십시오.
chmod 755 /path/to/directory chmod 644 /path/to/file
참고: 권한을 과도하게 설정하면 보안 위험이 발생할 수 있으므로 권한을 설정할 때 주의하세요.
PHP에 할당된 메모리가 부족해지면 치명적인 오류: 허용된 메모리 크기 X바이트가 소진되었습니다.라는 오류가 표시됩니다. 이는 스크립트가 php.ini에 설정된 제한보다 더 많은 메모리를 사용할 때 발생합니다.
PHP 스크립트에 다음 줄을 추가하여 일시적으로 메모리 제한을 늘릴 수 있습니다.
ini_set('memory_limit', '256M'); // Adjust as needed
또는 php.ini 파일에서 메모리 제한을 영구적으로 늘릴 수도 있습니다.
memory_limit = 256M
가능한 경우 메모리 사용량을 줄이려면 코드를 최적화하세요.
때때로 MySQL 데이터베이스 연결이 실패하여 치명적인 오류: 포착되지 않은 mysqli_sql_Exception: 'username'@'localhost' 사용자에 대한 액세스가 거부되었습니다.
Ensure that your credentials are correct and that the MySQL server is running. Also, make sure to use the appropriate connection function. Here's a correct example using mysqli_connect():
$mysqli = new mysqli('localhost', 'username', 'password', 'database'); if ($mysqli->connect_error) { die("Connection failed: " . $mysqli->connect_error); }
File uploads often fail due to improper settings or file size limitations. You may encounter errors like UPLOAD_ERR_INI_SIZE or UPLOAD_ERR_FORM_SIZE.
Check and adjust the following php.ini settings as needed:
file_uploads = On upload_max_filesize = 10M post_max_size = 12M
Also, make sure your form tag has the correct enctype attribute:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Upload"> </form>
This notice occurs when you try to access an array element that doesn’t exist, causing a Notice: Undefined index or Notice: Undefined offset error.
echo $_POST['username']; // Undefined index if 'username' is not in the form data
Always check if the array key exists before trying to access it. Use isset() or array_key_exists() to prevent this error.
if (isset($_POST['username'])) { echo $_POST['username']; } else { echo "Username not provided."; }
PHP throws a Fatal error: Class 'ClassName' not found error when you try to instantiate a class that hasn’t been defined or included properly.
Ensure that the file containing the class is included using require() or include(). Alternatively, use PHP’s spl_autoload_register() function to automatically load class files.
spl_autoload_register(function ($class_name) { include $class_name . '.php'; }); $object = new ClassName();
If your PHP script takes too long to execute, you may encounter the Fatal error: Maximum execution time of X seconds exceeded error. This usually happens when working with large datasets or external API calls.
You can increase the maximum execution time temporarily with:
set_time_limit(300); // Extends to 300 seconds (5 minutes)
To set it globally, adjust the max_execution_time directive in the php.ini file:
max_execution_time = 300
PHP errors are inevitable, but knowing how to tackle the most common ones can save you a lot of debugging time. Whether it's a syntax issue, database connection problem, or file permission error, understanding the root cause and solution is key to becoming a proficient PHP developer.
By following the guidelines in this article, you should be able to identify and resolve these issues effectively. Keep your error reporting enabled during development to catch these errors early and ensure smoother coding!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!