Home › Forums › BulletProof Security Pro › DB Backup: PHP Warning: Undefined array key “DBBjobs” in db-backup-security.php on line 646
- This topic has 6 replies, 2 voices, and was last updated 2 weeks, 5 days ago by
AITpro Admin.
-
AuthorPosts
-
Syxguns
ParticipantEnvironment:
- 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
DBBjobsarray. 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
.htaccessfile 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
.htaccessIP 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_coremod_access_compat.htaccessvalidation- 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.
AITpro Admin
KeymasterBPS 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'];Syxguns
ParticipantHi,
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 dbbjobsThere is no input or form field with that name present anywhere in the markup. Because of this, the form-processing function receives no
DBBjobsvalue 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.
AITpro Admin
KeymasterI’m running PHP Version: 8.4.19 on this site. BPS has been tested with all PHP versions up to the current version: PHP 8.5.6. I was just wondering if you were using a dev version of PHP, but since you’re not then it is not PHP version issue. There could be a problem with your PHP server build. Switching your PHP server version would confirm and fix that.
Backend wp-admin site caching could cause the Form HTML code not to be outputted correctly. Do you have CloudFlare installed? If so, then make sure CloudFlare is not caching your wp-admin backend.
This is the Form PHP Code:
echo "<td><input type=\"checkbox\" id=\"runjob\" name=\"DBBjobs[$row->bps_id]\" value=\"runjob\" /><br><span style=\"font-size:10px;\">".__('Run', 'bulletproof-security')."</span></td>";This is the outputted Form HTML Code:
<input type="checkbox" id="runjob" name="DBBjobs[13]" value="runjob">
AITpro Admin
KeymasterOops. The Backup Jobs Form is a dynamic Form that only exists if you have created a Backup Job. So you won’t see any Form elements unless you have actually created a Backup Job. So back to the original question: Do you have debugging turned on anywhere on your site?
A simple solution would be to create a Manual Backup Job. Then the POST element would actually exist.
Syxguns
ParticipantI’ll admit, I almost feel stupid for how long I chased this. The problem wasn’t the code at all. I just hadn’t entered a name for the backup job. Once I added a description, the process executed correctly.
Thank you for sticking with me. I’ll remove the patch I added earlier. I can’t believe I spent a day and a half chasing a ghost in the machine! LOL
AITpro Admin
KeymasterToo funny. Glad it was just a silly minor thing.
-
AuthorPosts
- You must be logged in to reply to this topic.



