Site Health false positive: WP_DEBUG_LOG warning when debug.log is outside wp-content - Ticket #64071
Trac ticket: https://core.trac.wordpress.org/ticket/64071
Screenshots
| Publicly accessible | Not Publicly Accessible |
|---|---|
This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.
Core Committers: Use this line as a base for the props when committing in SVN:
Props hbhalodia, westonruter, mukesh27.
To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.
Hi Team, Can you please help review and update the wordings if needed?
Thank You,
Test using WordPress Playground
The changes in this pull request can previewed and tested using a WordPress Playground instance.
WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.
Some things to be aware of
- The Plugin and Theme Directories cannot be accessed within Playground.
- All changes will be lost when closing a tab with a Playground instance.
- All changes will be lost when refreshing the page.
- A fresh instance is created each time the link below is clicked.
- Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance, it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.
For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.
If we wanted to go the extra mile, there could be a loopback request to try to actually request the file over HTTP to see if it returns anything. This may not be helpful in the end, however, as the file may not be present if nothing has been written to the log yet. Just an idea.
Thanks @westonruter, I thought of an edge case as well, what if there is no any log file present, then realpath will return false, and since we are checking a condition out there related if both the paths are present and if that is public path, then only to consider it as the debugging log is present in public directory, else we can show what we are showing.
I thought of an edge case as well, what if there is no any log file present, then
realpathwill return false, and since we are checking a condition out there related if both the paths are present and if that is public path, then only to consider it as the debugging log is present in public directory, else we can show what we are showing.
Good point. Well, in that case you could always check to see if ini_get( 'error_log' ) === WP_CONTENT_DIR . '/debug.log' in case the realpath() returns false. This will catch the default case when someone uses the default when setting WP_DEBUG_LOG to true:
https://github.com/WordPress/wordpress-develop/blob/5a53b94e89ff4276dbb235434ce8bfc99335366e/src/wp-includes/load.php#L622-L623
If, however, they do something like:
define( 'WP_DEBUG_LOG`, ABSPATH . 'debug.log' );
Then checking WP_DEBUG_LOG could fail if no logs have been written yet. In that case, if realpath() returns false, then actually there isn't a need to check realpath() on the full error log. All we need to do is check the path to the directory because that's not something which would be automatically created when a new error log entry is written. So I think this can be simplified by turning $debug_log_path = realpath( $debug_log_path ); into $debug_log_path = realpath( dirname( $debug_log_path ) ) . DIRECTORY_SEPARATOR;
Hi @westonruter, Can you please take a look on these comments?
https://github.com/WordPress/wordpress-develop/pull/10684#discussion_r2693027414, https://github.com/WordPress/wordpress-develop/pull/10684#discussion_r2693027425, https://github.com/WordPress/wordpress-develop/pull/10684#discussion_r2692957635
All other copilot's review have been resolved. We can land this PR if everything looks good?