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 |
|---|---|---|---|---|---|---|---|---|
| #551 | Gravatar Enhanced – Avatars, Profiles, and Privacy | 51 | 38 | 48 | 100k+ | Dynamic hook name | ||
| #552 | Known Agents – Track AI Bots and Crawlers, Block Scrapers, Analyze LLM Referral Traffic | 57 | 37 | 12 | 1k+ | Setting is missing a sanitization callback | ||
| #553 | Longer Permalinks | 57 | 27 | 21 | 8k+ | Missing Arg Domain | ||
| #554 | WP Table Builder – Drag & Drop Table Builder | 57 | 63 | 39 | 50k+ | Not Allowed | ||
| #555 | PDF invoice for WP ERP | 58 | 96 | 134 | 2k+ | Non-prefixed global variable | ||
| #556 | WC Korkmaz Contract – Contracts for WooCommerce | 59 | 7 | 38 | 500 | Non-prefixed global variable | ||
| #557 | Surge | 60 | 46 | 47 | 4k+ | Non-prefixed global variable | ||
| #558 | Ads.txt Manager | 61 | 33 | 16 | 4k+ | Text Domain Mismatch | ||
| #559 | Falcon – WordPress Optimizations & Tweaks | 62 | 47 | 66 | 2k+ | Short PHP open tag found | ||
| #560 | Easy SSL Plugin for SAKURA Rental Server | 62 | 23 | 17 | 50k+ | Input is not sanitized | ||
| #561 | Image Sitemap | 63 | 11 | 14 | 400 | Output is not escaped | ||
| #562 | WP-Farsi | 65 | 26 | 36 | 600 | Non-prefixed function | ||
| #563 | WPAdmin AWS CDN | 66 | 161 | 42 | 500 | Text Domain Mismatch | ||
| #564 | Debug Log Manager – Conveniently Monitor and Inspect Errors | 66 | 33 | 44 | 10k+ | Input is not validated | ||
| #565 | Easy PHP Settings | 66 | 34 | 48 | 1k+ | Missing Translators Comment | ||
| #566 | Printful Integration for WooCommerce | 67 | 218 | 76 | 50k+ | Text Domain Mismatch | ||
| #567 | Protection Against DDoS | 68 | 22 | 5 | 3k+ | Output is not escaped | ||
| #568 | WPThumb | 70 | 30 | 9 | 800 | Output is not escaped | ||
| #569 | Nginx Helper | 71 | 47 | 60 | 200k+ | Non-prefixed global variable | ||
| #570 | TinyPNG – JPEG, PNG & WebP image compression | 72 | 40 | 73 | 100k+ | Non-prefixed global variable | ||
| #571 | Emergency password reset | 73 | 56 | 14 | 800 | wp function not compatible with requires wp | ||
| #572 | Post Sliders & Post Grids | 73 | 6 | 43 | 1k+ | Request data is not unslashed | ||
| #573 | Image Quality Control | Still BE | 74 | 71 | 28 | 400 | Missing Translators Comment | ||
| #574 | Registration Form for WooCommerce | 75 | 5 | 42 | 900 | Non-prefixed global variable | ||
| #575 | Spider Blocker | 78 | 19 | 9 | 20k+ | Missing Translators Comment | ||
| #576 | Responsive Mobile-Friendly Tooltip | 79 | 25 | 14 | 600 | Missing Arg Domain | ||
| #577 | Antispam Bee | 80 | 4 | 38 | 700k+ | Nonce verification recommended | ||
| #578 | Gravity Forms CLI Add-On | 81 | 31 | 4 | 20k+ | Missing direct file access protection | ||
| #579 | WPLANG Lite | 84 | 8 | 5 | 400 | trademarked term | ||
| #580 | FormGent – Next-Gen AI Form Builder for WordPress with Multi-Step, Quizzes, Payments & More | 85 | 12 | 327 | 1k+ | Non-prefixed global variable | ||
| #581 | Salt Shaker | 85 | 15 | 13 | 6k+ | Interpolated SQL is not prepared | ||
| #582 | Hotfix | 86 | 11 | 8 | 4k+ | Deprecated class: services_json | ||
| #583 | WP-Memory-Usage | 89 | 4 | 9 | 10k+ | Interpolated SQL is not prepared | ||
| #584 | Post Export Import with Media | 90 | 34 | 41 | 1k+ | Missing Translators Comment | ||
| #585 | Hotlink File Prevention | 91 | 6 | 1 | 600 | file system operations is writable | ||
| #586 | MultiManager WP – Manage All Your WordPress Sites Easily | 91 | 28 | 11 | 1k+ | Missing Arg Domain | ||
| #587 | Snow Monkey Forms | 91 | 36 | 41 | 30k+ | Non-prefixed global variable | ||
| #588 | Super Light Cache Buster | 91 | 6 | 4 | 700 | Non-prefixed function | ||
| #589 | WP Force SSL & HTTPS SSL Redirect | 92 | 18 | 21 | 90k+ | Non-prefixed global variable | ||
| #590 | OptionTree | 93 | 165 | 2 | 50k+ | Text Domain Mismatch | ||
| #591 | Speed Up – Browser Caching | 95 | 13 | 2 | 700 | file system operations is writable | ||
| #592 | Enable SVG, WebP, and ICO Upload | 96 | 12 | 16 | 10k+ | Non-prefixed global variable | ||
| #593 | GenerateBlocks | 97 | 9 | 8 | 200k+ | file system operations is writable | ||
| #594 | Performant Translations | 97 | 5 | 9 | 40k+ | Non-prefixed global variable | ||
| #595 | Manage XML-RPC | 98 | 3 | 1 | 5k+ | file system operations is writable | ||
| #596 | WP Debugging | 99 | 1 | 5 | 10k+ | trademarked term |