wp_is_stream() causing strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated
Impacted plugin
Jetpack
Quick summary
PHP Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in wp-includes/functions.php on line 7288 PHP Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in wp-includes/functions.php on line 2187
I added error logging to find where this was coming from:
wp_is_stream called with non-string path by [{"file":"wp-includes/functions.php","line":2180,"function":"wp_is_stream"},{"file":"wp-content/plugins/woocommerce/vendor/jetpack-autoloader/class-path-processor.php","line":73,"function":"wp_normalize_path"}]
Steps to reproduce
Run a WP CLI command like wp site list
A clear and concise description of what you expected to happen.
No depreciated error logs
What actually happened
Error log and console errors (in the case of WP CLI)
Impact
All
Available workarounds?
No but the platform is still usable
Platform (Simple and/or Atomic)
Self-hosted
Logs or notes
Debian GNU/Linux 10 (buster) PHP 8.1.14 WP-CLI 2.10.0 WordPress 6.5.3 WooCommerce 8.7.0
This seems related to #37172.
Do you have any other plugins installed on your site at the moment?
I added error logging to find where this was coming from:
wp_is_stream called with non-string path by [{"file":"wp-includes/functions.php","line":2180,"function":"wp_is_stream"},{"file":"wp-content/plugins/woocommerce/vendor/jetpack-autoloader/class-path-processor.php","line":73,"function":"wp_normalize_path"}]
Can you do that again but capture all the stack frames instead of only two?
Attempting some static analysis, the line 73 mentioned corresponds to the second line in this code:
https://github.com/Automattic/jetpack/blob/d49d1cc2ac5a52f1acd907c85e8532128982347c/projects/packages/autoloader/src/class-path-processor.php#L64-L65
That find_directory_with_autoloader method is called in three places. The only one that seems at all reasonable to have passed in null is this one. In turn, the only caller of that method that seems likely is here, which in turn suggests you somehow have the active_plugins or active_sitewide_plugins option having a value with a null value for some key.
This issue has been marked as stale. This happened because:
- It has been inactive for the past 6 months.
- It hasn’t been labeled `[Pri] BLOCKER`, `[Pri] High`, `[Type] Feature Request`, `[Type] Enhancement`, `[Type] Janitorial`, `Good For Community`, `[Type] Good First Bug`, etc.
No further action is needed. But it's worth checking if this ticket has clear reproduction steps and it is still reproducible. Feel free to close this issue if you think it's not valid anymore — if you do, please add a brief explanation.