What are the best practices for managing directory permissions and file uploads in PHP?

When managing directory permissions and file uploads in PHP, it is important to ensure that directories have the appropriate permissions set to prevent unauthorized access. Additionally, when accepting file uploads from users, it is crucial to validate the file type, size, and content to prevent malicious uploads that could compromise the server.

// Set directory permissions to prevent unauthorized access
chmod('/path/to/directory', 0755);

// Validate file upload
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $allowedTypes = ['image/jpeg', 'image/png'];
    $maxFileSize = 2 * 1024 * 1024; // 2MB

    if (in_array($_FILES['file']['type'], $allowedTypes) && $_FILES['file']['size'] <= $maxFileSize) {
        move_uploaded_file($_FILES['file']['tmp_name'], '/path/to/uploaded/file');
        echo 'File uploaded successfully.';
    } else {
        echo 'Invalid file type or size.';
    }
} else {
    echo 'Error uploading file.';
}