Here is the code for a form that will recreate the issue:
<?php if ($_SERVER["REQUEST_METHOD"] == "POST" ) { print_r($_FILES['fileToUpload']); if (!file_exists($_FILES['fileToUpload']['tmp_name']) || !is_uploaded_file($_FILES['fileToUpload']['tmp_name'])) $primaryImage = file_get_contents($_FILES['fileToUpload']['tmp_name']); } ?> <form method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload Image"> </form>
When clicking “Upload Image” with no file uploaded, PHP 8 will create this error (I’ve included the print_r($_FILES['fileToUpload'])
output for reference).
Array ( [name] => [full_path] => [type] => [tmp_name] => [error] => 4 [size] => 0 )
Fatal error: Uncaught ValueError: Path cannot be empty in C:xampphtdocscolecmsphpExample.php:6 Stack trace: #0 C:xampphtdocscolecmsphpExample.php(6): file_get_contents(”) #1 {main} thrown in C:xampphtdocscolecmsphpExample.php on line 6
I have tried to wrap the issue in a try...catch...
block, various checks like the if
statement in the above to check for the emptiness of the path. Note, if you upload a file in the form and then click submit, no error will occur.
How can I prevent an error from being thrown while checking the presence of the $_FILE['my_file']
information in PHP 8?
Advertisement
Answer
You can check with:
if($_FILES['fileToUpload']['size'] > 0){ // code here }
which will ensure that you have submitted a file, and its size is not 0