jetpack icon indicating copy to clipboard operation
jetpack copied to clipboard

wp_is_stream() causing strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated

Open ablears opened this issue 1 year ago • 2 comments

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

ablears avatar May 09 '24 00:05 ablears

This seems related to #37172.

Do you have any other plugins installed on your site at the moment?

jeherve avatar May 09 '24 07:05 jeherve

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.

anomiex avatar May 09 '24 13:05 anomiex

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.

github-actions[bot] avatar Nov 06 '24 00:11 github-actions[bot]