BPS Pro DB Backup Failure Report

Home Forums BulletProof Security Pro BPS Pro DB Backup Failure Report

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #46011
    Syxguns
    Participant

    Environment:

    • RunCloud (NGINX + PHP-FPM)
    • No Apache modules available
    • WordPress running normally
    • All BPS Pro modules except DB Backup working correctly

    Issue Summary:

    The BPS Pro DB Backup module never initializes the DBBjobs array. This results in the persistent warning:

    PHP Warning: Undefined array key “DBBjobs” in db-backup-security.php on line 646

    This warning appears every time the DB Backup page loads.

     

    What has already been verified:

    • The folder /wp-content/bps-backup/db-backup/ exists.
    • The folder is writable by PHP.
    • The folder contains the correct .htaccess file with:
      Order Allow,Deny
      Deny from all
      
    • The obfuscated backup folder (e.g., /bps-backup/backups_xxxxx/) exists and is writable.
    • The obfuscated folder also contains a valid .htaccess.
    • Clicking Rename | Create | Reset does NOT create the DBBjobs array.
    • No errors appear when clicking the button — it simply does nothing.
    • Manual backup jobs cannot be created because DBBjobs never initializes.
    • No AutoRestore or permission blocks are occurring.
    • RunCloud’s “Fix Permissions” tool was run — no change.
    • No .htaccess IP restrictions remain.
    • No leftover Namecheap or LiteSpeed artifacts remain.
    • All other BPS Pro features (ARQ, Login Security, MScan, etc.) work normally.

    Behavioral Notes:

    • The DB Backup module appears to abort before reaching the code that initializes DBBjobs.
    • This happens even with a clean folder structure and correct permissions.
    • The issue persists across browsers and after clearing caches.
    • The issue persists even with all other plugins disabled.

    Suspected Cause: Because this installation is running on NGINX, not Apache, the DB Backup module may be performing checks that depend on:

    • mod_authz_core
    • mod_access_compat
    • .htaccess validation
    • Apache rewrite behavior
    • Apache-specific directory protection checks

    If the module requires Apache responses to proceed, it will never initialize DBBjobs under NGINX.

    Request: Can you confirm whether the DB Backup module requires Apache-specific functionality that is not available under NGINX/PHP-FPM? If so, is there a workaround or override to allow DBBjobs to initialize on NGINX-based hosting?

    Additional Note: I have database backups through RunCloud, so this issue is not critical for my site’s safety. However, having BPS Pro’s DB Backup working as a secondary backup system would be ideal.

    Thank you for any helpful information you may be able to provide.

     

    #46012
    AITpro Admin
    Keymaster

    BPS DB Backup does not use any htaccess files/code. It only uses PHP and JavaScript code. This is Form processing code, which should only be processed/run when you click the Run Job|Delete Job button under the Backup Jobs ~ Manual|Scheduled tab. The Form processing code has an isset() condition to only process this function if the Form is submitted. The “PHP Warning: Undefined array key” error is a minor error, which could just be a code correctness check. What version of PHP are you running?

    If you have WP_DEBUG turned on in your wp-config.php file or using some other debugging method that could be the reason you are seeing this PHP error. When you are done debugging be sure to turn off debugging.

    Code lines: 634-646

    // Form Processing: Backup Jobs ~ Manual|Scheduled - DB Backup Run|Delete Jobs Form
    function bpsPro_dbbackup_form_processing() {
    
    if ( isset( $_POST['Submit-DBB-Run-Job'] ) && current_user_can('manage_options') ) {
    	check_admin_referer('bulletproof_security_db_backup_run_job');
    	
    global $wpdb;	
    $timeNow = time();
    $gmt_offset = get_option( 'gmt_offset' ) * 3600;
    $timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);	
    $DBBoptions = get_option('bulletproof_security_options_db_backup');
    
    	$DBBjobs = $_POST['DBBjobs'];
    #46015
    Syxguns
    Participant

    Hi,

    I’ve done some deeper investigation into the DB Backup issue, and I’ve confirmed something important about what’s happening on my system.

    1. The DBBjobs field is not being generated anywhere in the DB Backup form
    I inspected the HTML output of the “Backup Jobs ~ Manual | Scheduled” page using DevTools and searched for both:

    DBBjobs
    dbbjobs

    There is no input or form field with that name present anywhere in the markup. Because of this, the form-processing function receives no DBBjobs value at all.

    2. The form-processing function is being triggered even though no DBBjobs field exists
    Since the field is missing, PHP 8.3 throws:

    PHP Warning: Undefined array key "DBBjobs"

    This happens even when simply loading the page, not only when submitting the form. That means the function is being executed without the expected POST structure.

    3. This appears to be a PHP 8.3 compatibility issue
    Older PHP versions silently ignored missing array keys. PHP 8.3 does not, and this seems to expose the missing field.

    4. Next steps I’m taking
    To move forward while we sort out the root cause:

    • I’m going to apply a temporary PHP 8.3‑safe fallback to prevent the undefined array key error so the module can initialize properly.
    • I’m also going to investigate whether any JavaScript responsible for generating or populating the DBBjobs field might be blocked or failing to run on my server.

    If you need any additional details, screenshots, or the exact HTML output from the DB Backup page, I can provide that as well.

    Thanks for your help as we track this down.

Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.