WordPress.WP.AlternativeFunctions.file_system_operations_is_writable
file system operations is writable
The plugin performs filesystem work with raw PHP functions where WordPress expects safer filesystem handling.
Why It Shows Up
Plugin Check found functions such as `fopen`, `fwrite`, `chmod`, `mkdir`, `readfile`, or related operations.
Why It Matters
WordPress sites can use different filesystem permissions and transports. Raw filesystem calls can fail on common hosts or write to unsafe locations.
How to Fix
- Use WordPress filesystem helpers when writing, reading, or changing files in plugin-managed paths.
- Validate paths and keep writes inside directories owned by the plugin or WordPress uploads.
- Never write PHP code from user input or remote responses.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #1 | BulletProof Security | 0 | 5,048 | 4,949 | 20k+ | Output is not escaped | ||
| #2 | Themify Builder | 9 | 5,334 | 2,171 | 5k+ | Text Domain Mismatch | ||
| #3 | JetBackup – Backup, Restore & Migrate | 10 | 1,567 | 156 | 200k+ | Exception output is not escaped | ||
| #4 | 404 Solution | 15 | 582 | 1,532 | 10k+ | Non-prefixed class | ||
| #5 | RestroPress – Online Food Ordering System | 17 | 535 | 3,234 | 1k+ | Non-prefixed global variable | ||
| #6 | WPtouch – Make your WordPress Website Mobile-Friendly | 17 | 1,466 | 325 | 50k+ | Text Domain Mismatch | ||
| #7 | Advanced File Manager – Ultimate File Manager for WordPress And Document Library Solution | 18 | 1,229 | 923 | 100k+ | Exception output is not escaped | ||
| #8 | Shopping Cart & eCommerce Store | 18 | 8,240 | 18,478 | 3k+ | Non-prefixed global variable | ||
| #9 | WPPizza – A Restaurant Plugin | 18 | 4,689 | 2,703 | 1k+ | Text Domain Mismatch | ||
| #10 | GiveWP – Donation Plugin and Fundraising Platform | 19 | 3,402 | 3,555 | 100k+ | Output is not escaped | ||
| #11 | Matomo Analytics – Powerful, Privacy-First Insights for WordPress | 19 | 1,993 | 892 | 100k+ | Exception output is not escaped | ||
| #12 | Really Simple Security – Simple and Performant Security (formerly Really Simple SSL) | 19 | 530 | 375 | 3m+ | Missing Translators Comment | ||
| #13 | SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments | 19 | 541 | 1,146 | 80k+ | Non-prefixed global variable | ||
| #14 | WP Email Template | 19 | 344 | 345 | 2k+ | Exception output is not escaped | ||
| #15 | Broadstreet | 20 | 434 | 273 | 800 | Output is not escaped | ||
| #16 | Duplicator – Backups & Migration Plugin – Cloud Backups, Scheduled Backups, & More | 20 | 2,874 | 1,988 | 1m+ | Non-prefixed global variable | ||
| #17 | EventPrime – Events Calendar, Bookings, Tickets & AI | 20 | 846 | 4,224 | 7k+ | Non-prefixed global variable | ||
| #18 | GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership | 20 | 1,832 | 720 | 700 | Non Singular String Literal Domain | ||
| #19 | Microthemer Lite – Visual Editor to Customize CSS | 20 | 1,004 | 1,699 | 10k+ | Non-prefixed global variable | ||
| #20 | Nimble Page Builder | 20 | 1,591 | 1,684 | 30k+ | Missing Arg Domain | ||
| #21 | Pix por Piggly (para Woocommerce) | 20 | 547 | 195 | 4k+ | Exception output is not escaped | ||
| #22 | Powered Cache – Caching and Optimization for WordPress – Easily Improve PageSpeed & Web Vitals Score | 20 | 147 | 231 | 3k+ | Exception output is not escaped | ||
| #23 | Membership Plugin – Kadence Memberships | 20 | 5,089 | 3,005 | 9k+ | Text Domain Mismatch | ||
| #24 | Robin Image Optimizer – Unlimited Image Optimization, WebP & AVIF | 20 | 556 | 543 | 100k+ | Output is not escaped | ||
| #25 | Booster for WooCommerce – PDF Invoices, Abandoned Cart, Variation Swatches & 100+ Tools | 20 | 787 | 3,416 | 30k+ | Non-prefixed global variable | ||
| #26 | WP Compress – Instant Performance & Speed Optimization | 20 | 4,292 | 3,691 | 10k+ | Non Singular String Literal Domain | ||
| #27 | WP Minify Fix | 20 | 306 | 380 | 800 | Output is not escaped | ||
| #28 | Backup Migration | 21 | 999 | 1,081 | 80k+ | Non-prefixed global variable | ||
| #29 | Kadence Security – Password, Two Factor Authentication, and Brute Force Protection | 21 | 1,060 | 959 | 700k+ | Missing Translators Comment | ||
| #30 | Spam protection, Honeypot, Anti-Spam by CleanTalk | 21 | 835 | 1,146 | 200k+ | Missing nonce verification | ||
| #31 | Comet Cache | 21 | 857 | 245 | 20k+ | Output is not escaped | ||
| #32 | DELUCKS SEO | 21 | 362 | 1,171 | 300 | Missing nonce verification | ||
| #33 | Event Espresso – Event Registration & Ticketing Sales | 21 | 12,710 | 2,136 | 600 | Text Domain Mismatch | ||
| #34 | FileOrganizer – WordPress File Manager | 21 | 549 | 261 | 200k+ | unlink unlink | ||
| #35 | Ibtana – Ecommerce Product Addons | 21 | 1,548 | 1,718 | 6k+ | Non Singular String Literal Domain | ||
| #36 | Link Library | 21 | 1,932 | 1,387 | 10k+ | Unsafe printing function | ||
| #37 | Modular DS: Monitor, update, and backup multiple websites | 21 | 199 | 82 | 40k+ | Exception output is not escaped | ||
| #38 | Five Star Restaurant Reservations – WordPress Booking Plugin | 21 | 1,101 | 1,159 | 10k+ | Output is not escaped | ||
| #39 | SeatReg | 21 | 350 | 1,842 | 300 | Missing nonce verification | ||
| #40 | Simple Job Board | 21 | 635 | 1,376 | 10k+ | Non-prefixed global variable | ||
| #41 | Smart Forms – when you need more than just a contact form | 21 | 776 | 574 | 5k+ | Output is not escaped | ||
| #42 | Buckaroo Payments for WooCommerce | 21 | 692 | 351 | 2k+ | Exception output is not escaped | ||
| #43 | WebP Express | 21 | 160 | 427 | 300k+ | Non-prefixed global variable | ||
| #44 | Wise Chat | 21 | 470 | 515 | 5k+ | Output is not escaped | ||
| #45 | Wordfence Security – Firewall, Malware Scan, and Login Security | 21 | 1,893 | 3,292 | 5m+ | Output is not escaped | ||
| #46 | WP-Lister Lite for eBay | 21 | 6,701 | 5,140 | 2k+ | Output is not escaped | ||
| #47 | WP phpMyAdmin | 21 | 4,528 | 6,435 | 40k+ | Missing Arg Domain | ||
| #48 | wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin | 21 | 1,829 | 1,534 | 60k+ | Output is not escaped | ||
| #49 | Ajax Load More – Infinite Scroll, Load More, & Lazy Load | 22 | 641 | 592 | 30k+ | Unsafe printing function | ||
| #50 | ANAC XML Bandi di Gara | 22 | 294 | 244 | 500 | Output is not escaped |