Manual imports crash when PHP set_time_limit() is disabled

Aperta Adatta ai principianti
#1,376 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
php, wordpress
Ambito
backend

Direzione di ricerca

Inizia in includes/admin/feedzy-rss-feeds-import.php, in Feedzy_Rss_Feeds_Import::run_job_logic() intorno alla riga 1952, dove il percorso di importazione manuale chiama set_time_limit() prima di recuperare il feed. Leggi tests/test-import.php ed esegui phpunit tests/test-import.php in un ambiente di test WordPress; l’issue indica che i test non sono stati eseguiti perché PHP non era disponibile localmente. Il lavoro è completato quando un’importazione manuale non si interrompe più se la funzione è disabilitata e la suite di test esistente viene superata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug-report bug-report-triage

Summary

Feedzy 5.2.15 recorded two manual-import crashes with Call to undefined function set_time_limit(). An import on a host that restricts execution-time changes is expected to proceed within the host's existing limits rather than terminate while attempting to extend them. Instead, the import request aborts before feed items are processed, preventing that run from importing posts.

Customer context

  • Product / area: Feedzy RSS Feeds, manual feed-to-post import.
  • Version: 5.2.15.
  • Environment: WordPress and PHP versions not provided. PHP function restrictions are inferred from the undefined native-function error; server configuration was not supplied.
  • Integration / third party: Not provided.
  • Reported error / symptom: Two captured occurrences of Error: Call to undefined function set_time_limit().
  • Impact: The affected import requests terminated. The deactivation submission contained no written feedback and does not establish that the crash caused deactivation.

Reproduction notes

  1. In a test WordPress installation, activate Feedzy 5.2.15 and configure a valid feed-to-post import.
  2. Run PHP 8.x with set_time_limit listed in disable_functions.
  3. Trigger the import's manual run.
  4. Check for Call to undefined function set_time_limit() and an aborted import request.

These are source-derived reproduction steps, not a completed local reproduction. Supplied telemetry records two failures through run_now() → run_job() → run_job_logic(); the original job settings were not provided.

Diagnosis

Conclusion

The affected release contains an unconditional call to an unavailable PHP native function on the exact manual-import path identified by telemetry. This confirms a host-compatibility defect rather than merely inferring one from uninstall feedback. The host's precise restriction mechanism remains unknown. The call is unchanged in v5.2.14 and v5.2.15, so there is no evidence of a new 5.2.15 regression.

Where this likely occurs
  • includes/admin/feedzy-rss-feeds-import.php, lines 1277–1295 — Feedzy_Rss_Feeds_Import::ajax() dispatches the authorized run_now action.
  • includes/admin/feedzy-rss-feeds-import.php, lines 1457–1503 — Feedzy_Rss_Feeds_Import::run_now() obtains the authorized import and calls run_job() without an exception handler around that call.
  • includes/admin/feedzy-rss-feeds-import.php, lines 1753–1768 — Feedzy_Rss_Feeds_Import::run_job() delegates to run_job_logic() with logger-context cleanup in finally, not error recovery.
  • includes/admin/feedzy-rss-feeds-import.php, lines 1944–1964 — Feedzy_Rss_Feeds_Import::run_job_logic() calls set_time_limit() at line 1952 without an availability check, before get_job_feed(). Verified at tag v5.2.15 and current HEAD 24a0aa4; v5.2.14 contains the same call. Blame attributes this expression to 21f40005 from 2022.
  • includes/feedzy-rss-feeds.php, lines 235–246 — Feedzy_Rss_Feeds::define_admin_hooks() instantiates the import engine and registers its cron and AJAX callbacks.
Engineering notes

set_time_limit() is a PHP native function, not a plugin-defined symbol resolved through Composer or the product autoloader. The official PHP configuration reference confirms that disabling a function removes its definition starting with PHP 8.0: https://www.php.net/manual/en/ini.core.php#ini.disable-functions. That documented configuration explains how the inspected call can produce the supplied error; the site's PHP version and disable_functions value are not available. The execution-time extension is unconditional despite its comment mentioning optional rewriting services, and its return value is not consumed.

The Pro sibling was checked for an alternate implementation: no run_job_logic() override was found. In the Pro repository, includes/admin/feedzy-rss-feeds-pro-admin.php, lines 1500–1504 — Feedzy_Rss_Feeds_Pro_Admin::feedzy_modify_feed_config() contains only a commented-out set_time_limit(0) expression. The failing implementation belongs to the free repository.

Test coverage status

tests/test-import.php, lines 29–51 — Test_Feedzy_Import::test_import_stops_when_feed_url_filter_returns_error() invokes run_job_logic() but does not simulate an unavailable execution-time function. No relevant disabled-function coverage was found during inspection of the free tests or the targeted Pro test search. Tests were not executed because the local PHP executable is unavailable.

What to verify or explore next
  • Reproduce the manual import on PHP 8.x with disable_functions=set_time_limit, then compare with the same job when that function is available.
  • Run phpunit tests/test-import.php in an established WordPress test environment under both PHP configurations.
  • Verify the scheduled-import outcome under the same restriction; its exception handling differs from the reported manual path.
Unknowns / follow-up

The host configuration, PHP/WordPress versions, Pro activation status, and import configuration were not supplied. No full local runtime reproduction was performed. Existing-issue searches for set_time_limit, undefined-function errors, and time-limit failures found no matching issue.

Confidence

Confidence: 97/100

The telemetry location and manual-import call chain match the unconditional call in tagged source, and PHP's documented disabled-function behavior explains the exact error. Host configuration and a local runtime reproduction remain unavailable.


Source: automated uninstall feedback — feedzy-rss-feeds, 2026-11-08
Generated by bug-report-triage (ID: bug-report-triage_6af1538ee180b3.20433153)

Lingua principale
PHP
Stelle
120
Fork
28
Merge medio
1g 10h
PR unite (30g)
21

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Codeinwp/feedzy-rss-feeds

Tutte le issue di Codeinwp/feedzy-rss-feeds

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.