[php-src] Issue #8597: Warning messages when rename() fails are stupidly vague

From: Date: Fri, 20 May 2022 16:43:35 +0000
Subject: [php-src] Issue #8597: Warning messages when rename() fails are stupidly vague
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-241567@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/8597 Author: php4fan ### Description **The following code:** ```php <?php // Let /path/to/this-file-exists.txt be a file that exists // Let /path/to/this-file-does-not-exist.txt be a path that does _not_ exist. // Let /this/directory/exists be a directory that exists // Let /this/directory/does/not/exist be a path that does _not_ exist rename('/path/to/this-file-exists.txt', '/this/directory/does/not/exist/newfilename.txt'); rename('/path/to/this-file-does-not-exist.txt', '/this/directory/exists/newfilename.txt'); ``` **Resulted in this output:** ``` Warning: rename(/path/to/this-file-exists.txt, /this/directory/does/not/exist/newfilename.txt): No such file or directory Warning: rename(/path/to/this-file-does-not-exist.txt, /this/directory/exists/newfilename.txt): No such file or directory ``` That is, the **EXACT SAME ERROR MESSAGE** in both cases, saying "no such file or directory", but without clarifying WHAT file or directory is missing. **But I expected this output instead:** A different error message in each case, allowing me to distinguish whether the rename failed because: - the source file doesn't exist, or - the target directory doesn't exist, preventing the creation of the target file Correct error messages in this example could be something like: ``` Warning: rename(/path/to/this-file-exists.txt, /this/directory/does/not/exist/newfilename.txt): Couldn't write destination file. No such file or directory: '/this/directory/does/not/exist'. Warning: rename(/path/to/this-file-does-not-exist.txt, /this/directory/exists/newfilename.txt): Couldn't read source file. No such file or directory: '/path/to/this-file-does-not-exist.txt' ``` The **exact same issue** happens when the error is **"permission denied"**: it does not specify on which file the permission was denied, what permission was denied (reading or writing) or whether it was on the source or target side of the operation. I'm not exactly sure what the best and most elegant way to phrase the message is, that covers all the possible cases with the least variations, but the important thing is that it conveys all the information, and the current message definitely doesn't. ### PHP Version PHP 8.1.6 ### Operating System debian 10

« previous php.bugs (#241567) next »