I know there has been numerous postings about issues with PHP unlink, and I have tried quite a number of them in the past few days. Nothing seems to work. and it's getting desperate here. I keep receiving 'Permission denied' on the attachments that I extracted and wrote to disk. I am developing using Windows 10, Localhost:8081 using PHP 5.6.40, Wampserver with Apache 2.4.41 That being said, I am logged into my computer as administrator (which I gather doesn't mean a hill of beans to Apache). Here's the flow: I read a email, extract any attachments (files), write them to a folder (which is inside of my project), rename the files (keeping the renamed file in same folder as original folder) to a new name and upload only the newly RENAMED files. And it works well EXCEPT - it will not unlink (delete) the original file. It will unlink the new file (original file renamed), but not the original file. When I extracted the attachments, I wrote them out and issued a chmod(Original file,0777) and so forth (I have tried 0750) thinking that might do the trick since the newly created file deleted. No go. I have tried to rename the original files and move them to another folder, but still does not delete the ORIGINAL file. If I need to add a user or some other thing to Apache etc. please list step-by-step as I am not very versed with Apache. Below is the coding I used to write the file from the extracted attachment. Any help appreciated. It just makes no sense why it deletes the rename file and not the original file.
$wrkSave = './workToUpload/' . $filename;
$fp = fopen($wrkSave, 'w+');
fwrite($fp, $attachment);
fclose($fp);
chmod($wrkSave,0777);
AND this my deletion code:
$folder_path = './workToUpload';
$files = glob($folder_path . '/*');
foreach($files as $file)
{
if (is_file($file))
{
try
{
$strNameOnly = str_replace('./workToUpload/','',$file);
$strFullPath = $_SERVER['DOCUMENT_ROOT'] . '/UPLOADEM/workToUpload/' . $strNameOnly;
chmod($file,0777);
unlink($strFullPath);
echo 'DELETED FILE: ' . $file . PHP_EOL;
}catch(Exception $e){
echo 'Message: ' . $e->getMessage() . PHP_EOL;
}
}
}
When I checked to the Apache log and the php log, they just show the error message. I even tried renaming the original file to another folder and still did not delete the original file :(
source https://stackoverflow.com/questions/67781080/permissions-problem-with-files-in-php-and-unlink-not-deleting-all-files
Comments
Post a Comment