What are some best practices for using copy() and move_upload_file() in PHP to ensure file integrity and security?

When using copy() and move_upload_file() in PHP to handle file uploads, it's important to validate the file type, check for errors, and ensure that the destination path is secure to prevent unauthorized access or file manipulation. To enhance file integrity and security, always use absolute file paths, sanitize user input, and set appropriate file permissions.

// Example code snippet for securely copying an uploaded file
$uploadDir = '/path/to/upload/directory/';
$allowedTypes = ['image/jpeg', 'image/png'];

if ($_FILES['file']['error'] === UPLOAD_ERR_OK && in_array($_FILES['file']['type'], $allowedTypes)) {
    $uploadedFile = $_FILES['file']['tmp_name'];
    $destinationFile = $uploadDir . basename($_FILES['file']['name']);

    if (move_uploaded_file($uploadedFile, $destinationFile)) {
        echo 'File uploaded successfully.';
    } else {
        echo 'Failed to upload file.';
    }
} else {
    echo 'Invalid file type or upload error.';
}