{"id":16210893,"url":"https://github.com/solidalloy/easywp-debugger","last_synced_at":"2025-10-05T22:55:13.304Z","repository":{"id":107972024,"uuid":"198384470","full_name":"SolidAlloy/easywp-debugger","owner":"SolidAlloy","description":"EasyWP Debugger is a single PHP script that allows to debug broken WordPress websites and more","archived":false,"fork":false,"pushed_at":"2021-03-11T18:46:11.000Z","size":1300,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-28T11:41:18.341Z","etag":null,"topics":["debugger","debugging-tool","easywp","php","wordpress"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SolidAlloy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-23T08:15:18.000Z","updated_at":"2022-02-04T14:51:33.000Z","dependencies_parsed_at":"2023-06-09T07:43:34.850Z","dependency_job_id":null,"html_url":"https://github.com/SolidAlloy/easywp-debugger","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/SolidAlloy/easywp-debugger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidAlloy%2Feasywp-debugger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidAlloy%2Feasywp-debugger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidAlloy%2Feasywp-debugger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidAlloy%2Feasywp-debugger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SolidAlloy","download_url":"https://codeload.github.com/SolidAlloy/easywp-debugger/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidAlloy%2Feasywp-debugger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278532354,"owners_count":26002346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debugger","debugging-tool","easywp","php","wordpress"],"created_at":"2024-10-10T10:44:48.624Z","updated_at":"2025-10-05T22:55:13.267Z","avatar_url":"https://github.com/SolidAlloy.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"EasyWP Debugger\n===============================================\n\n\nEasyWP Debugger is a helper file that you can upload to the website root directory and open in a browser. It allows to debug and fix websites that otherwise would be impossible to fix (because of no access to file storage or database). It is built to help with websites hosted on [EasyWP](https://www.namecheap.com/wordpress/), but you can use it on other platforms as well.\n\nThere is a debugger file generator called debugger-generator.php. It allows to download debugger files with a random name (_wp-admin-pretrxs_, _wp-admin-thwdsa,_ etc.) and password. In this guide, we use **debugger.php** as an **example**.\n\n \n\nTable of Contents\n-----------------\n\n   * **[Introduction](#introduction)**\n   * **[How To Use](#how-to-use)**\n   * **[Functionality](#functionality)**\n     * [EasyWP tab](#easywp-tab)\n     * [Debug tab](#debug-tab)\n     * [Files\u0026amp;Backups tab](#filesbackups-tab)\n     * [Database tab](#database-tab)\n   * **[Errors and issues that can be fixed via Debugger](#errors-and-issues-that-can-be-fixed-via-debugger)**\n     * [Blank screen | \"The site is experiencing technical difficulties\"](#blank-screen--the-site-is-experiencing-technical-difficulties)\n     * [500 Internal Server Error](#500-internal-server-error)\n     * [502/503/504 errors](#502503504-errors)\n     * [Unable to log into WP Admin / Missing Clear Cache button](#unable-to-log-into-wp-admin--missing-clear-cache-button)\n     * [Insecure content](#insecure-content)\n     * [Hacked website](#hacked-website)\n   * **[Backups and Restorations](#backups-and-restorations)**\n     * [Back up a website](#back-up-a-website)\n     * [Restore a website from a backup](#restore-a-website-from-a-backup)\n   * **[How to fix file system](#how-to-fix-file-system)**\n   * **[Repository structure and API](#repository-structure-and-api)**\n\n\n\n# How To Use\n\nThere are two ways to get a debugger file:\n\n1. Download directly from GitHub.\n2. Get using the debugger generator script.\n\nIf you use the first method, I recommend that you change the password at the start of the file right away (the PASSWORD constant).\n\n\n\nUpload the file to the document root or wp-admin folder, log in with the password you set via the constant, and you will now see the following interface: \n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327774.png)  \n\n- You can switch between the **Tabs** to see the other tools you can use:  \n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327773.png) \n\n- When you click on the button, the result will always be shown in the **Progress log** field:  \n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327772.png)  \n\n- You can always use **additional buttons** in the menu, no matter which tab you are on:  \n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327771.png) \n\n\n\nWhen you finish work in the Debugger, don't forget to remove it with the **Remove File From Server** button.\n\n​    \n\n# Functionality\n\n## EasyWP tab\n\n\nThis tab is dedicated to the websites hosted on EasyWP and allows you to:\n\n*   **Flush Cache** flushes Varnish and Redis caches. Both caches have to be cleared for the website to show new content. It is especially useful if you just fixed an error (changed theme, disabled plugin) but the website doesn't go up;\n*   **Fix Filesystem** is rather outdated button. It was useful when EasyWP had frequent filesystem issues. Cases, when the issue can be connected to the filesystem errors, are described [in this section](#how-to-fix-file-system);\n*   **Fix EasyWP Plugin** is used to fix the issues related to the EasyWP plugin: not working **WP Admin** button or absence of the **Clear Cache** button. More info on these cases [are described here](#unable-to-log-into-wp-admin--missing-clear-cache-button);\n*   **Subscription Resources** is there for EasyWP customer support to check subscription resources usage and can't be used by anyone else;\n*   **Enable/Disable UsageDD** simply installs and removes the UsageDD plugin. UsageDD allows you to find the possible reason for high resources usage refer to the \"[502/503/504 errors](#502503504-errors)\" section. The plugin can be installed from within WP Admin dashboard too.\n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327770.png)\n\n  \n\nDebug tab\n-------------\n\n\nIn this section you will have the following options:\n\n*   **Enable/Disable Debug** - set _error\\_reporting_ to E\\_ALL and _display\\_errors_ to 1. This will make the website show the full error instead of the \"Technical Issues\" banner;\n*   **Replace Default Files** replaces default files of WordPress with the files of the latest version. It is especially helpful when the error is about a missing default file. To clean hacked websites, [additional steps](#hacked-website) are recommended;\n*   **Activate Clean 2019 Theme** uploads and activates the _TwentyNineteen_ theme. It is useful when you want to set the default theme for testing purposes as well as for cleaning hacked websites. If there is already _TwentyNineteen_ theme on the website, the button re-uploads the theme anyway.\n\n  \n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327769.png)\n\n\n\nFiles\u0026Backups tab\n---------------------\n\nIf the debugger file is uploaded to the **wp-admin** folder, instead of the root directory of the website, the **file path remains unchanged** while working with the Files\u0026Backups tab.\n\n\nHere you will be able to:\n\n*   **Extract a ZIP archive** extracts a ZIP file of any size into the destination directory. If you leave the destination directory blank, the files will be extracted into the root directory of the website;\n\n\u003e Tips\n\u003e\n\u003e 1.  Use the **View content of a ZIP archive** form to check if the archive will extract files right into the destination directory ( /file1.txt ) or the archive will extract the files into their own folder ( /wordpress/file1.txt ).\n\u003e 2.  If you extract WordPress files into the root directory, make sure to **back up** the wp-config.php file. You can download it or rename it to wp-config.php.bak.\n\n*   **Compress** form allows to compress a folder or file into a ZIP file. Files above 50 MB in size **will not be included** in the archive (large error\\_log files, other backups, etc.);\n\n\u003e Tips\n\u003e\n\u003e *   If you start typing a folder name, it will appear in the destination field. If you want to leave the name of the backup by default (_wp-files\\_\u003ctime\u003e.zip_), copy the default archive name before entering the folder name.\n\u003e *   If you press Submit without filling any fields, the whole root directory will be compressed into a _wp-files\\_\u003ctime\u003e.zip_ backup.\n\n*   **View content of a ZIP archive:** prints the list of files inside the archive to Progress Log;\n*   **Delete folder/file** deletes the folder or file you will specify in this field. Simply enter the relative ( _wp-content/cache_ ) or absolute ( _/var/www/wptbox/wp-config.php_ ) path to remove such a folder/file. It is much faster than removing folders through FTP (removing a plugin folder via FTP can take up to 15-20 minutes):\n\n  \n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327768.png)\n\n\n\nDatabase tab\n-------------------\n\n\nThe **Database** tab allows you to:\n\n*   **Enable Adminer:** allows to access the website database in a PHPMyAdmin-like interface. Unlike the default PHPMyAdmin access on EasyWP, it doesn't have a query limit and thus allows to export and import databases. Follow [this guide](#insecure-content) to import a database to the EasyWP website;\n*   **Go To Adminer:** press this button when Adminer is enabled, and you will get there once again;\n*   **Disable Adminer:** disables access to the database through Adminer.\n\nMake sure to **disable** Adminer **before** you remove Debugger.\n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327767.png)\n\n  \n\n# Errors and issues that can be fixed via Debugger \n\nBlank screen | \"The site is experiencing technical difficulties\"\n--------------------------------------------------------------------\n\n\nIf the website shows a blank screen, it doesn't necessarily mean there is an error in the PHP code. To check, if the blank screen indeed is caused by the code issues, press **F12** to open console \u003e\u003e switch to the **Network tab** \\\u003e\u003e reload the website with **Ctrl+F5** \u003e\u003e check the status code of the main file (called \"/\"):\n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327759.png)\n\nIf the status code is 200, there's an issue with the theme. To fix it follow the instructions:\n\n1.  Check which theme is active through **Debugger** \u003e\u003e **Database** tab \u003e\u003e **Enable Adminer** \u003e\u003e **wp\\_options** \u003e\u003e **Template/stylesheet** section.\n2.  Check if there is a folder of this theme present in the website files via FTP \u003e\u003e **wp-content** folder \u003e\u003e **Themes**.\n3.  If there is **no such folder**, it is necessary to change the active theme or upload the necessary theme.\n4.  If the **folder exists**, the issue is inside the files of the theme. Try to upload this theme once or install the default theme instead of the broken one.\n\nIt is advised to change to the default theme when debugging the website. You can do it with help of the **Debug** tab \u003e\u003e **Activate Clean 2019 Theme** button. Even if the _TwentyNineteen_ theme is not installed, it will be uploaded, installed, and activated with the help of this button.\n\nIf the status code is 500, there is an issue with the PHP code which is described below.\n\n  \n\n500 Internal Server Error\n-----------------------------\n\n\nThis error usually means there is a fatal error in the PHP code of the website. To check the error, follow the next steps:\n\n1.  Open the **Debugger** tab \u003e\u003e Press **Enable Debug** and reload the website page to see the full error description.\n2.  Use common sense (change the theme, disable plugins, etc.)\n3.  Once the website is fixed and up, press **Disable Debug** so that the internal structure of the website is not revealed to hackers through the errors and warnings.\n4.  If the website is hosted on EasyWP, navigate to the **Easy WP** tab \u003e\u003e press the **Flush Cache** button to clear the cache and observe the changes.\n\nThis error can be also fixed by disabling the theme/plugin which causes it (make sure to flush the EasyWP cache after any change in the database if the website is hosted on EasyWP). Pay attention to the level of errors. Only **Fatal Error** messages may cause the 500 error. The **Warning**, **Notice**, and other messages are there just for debug but they don't break the website completely.\n\n  \n\n502/503/504 errors\n----------------------\n\nThese errors mean that the website exceeded some hardware limits like CPU or RAM. Many reasons may cause this issue: a poorly optimized website, heavy theme or plugin, number of visitors, or a DDoS attack, etc.\n\nIf the website is returning the error intermittently, you can go to **Debugger** \u003e\u003e **EasyWP** tab \u003e\u003e press the **Enable UsageDD** button to install [this plugin](https://wordpress.org/plugins/usagedd/) (alternatively, install the plugin through the Wordpress admin dashboard).\n\nWe recommend that you read the description of the plugin at the link above to know how to debug the website with it, but here is a short list of things to check:\n\n1. A number of queries must be ideally under 50. If it is higher, there is an issue with the plugin or the theme used.\n\n2. The difference between the TTFB and full-page download (e.g. 1.72 | 2.08s) must be under one second. Otherwise, the theme is heavy and must be optimized or changed.  \n\n3. Memory usage must be under 50 MB. The reason for the higher usage is one of the enabled plugins of the theme. Try deactivating them one by one to find out which plugin/theme is causing the issue.\n\n   \n\nUnable to log into WP Admin / Missing Clear Cache button\n----------------------------------------------------------------\n\n\nSometimes, it is not possible to log into the Wordpress Dashboard via the **Log in** Button in EasyWP dashboard. In such a case follow the next steps:\n\n1.  Check the **siteurl** and **home** values in the database. If they contain www version of the website, change the website URL to non-www . If you want the website to work on a www version, contact EasyWP customer support.\n2.  If the website is already using a non-www URL, press **Fix EasyWP Plugin** in **EasyWP** tab of the Debugger.\n\nIf there is a missing **Clear Cache** button in the wp-admin dashboard of an EasyWP-hosted website, the reason for this is the missing EasyWP plugin. Install it with the **Fix EasyWP Plugin** button in **EasyWP** tab of the Debugger.\n\n  \n\nInsecure content\n--------------------\n\n\nIf the website content loads incompletely and the **website shows a warning lock in the URL bar**, there are **http://** links in the database. They should be changed to **https://** and Debugger can be of help here. Take the following steps to fix insecure content:\n\n1. Navigate to the **Database** tab \u003e\u003e press **Enable Adminer**. You will be redirected to the Adminer interface.  \n\n2. Click **Export** in the top left corner:  \n\n   ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327778.png)  \n\n3. Change the **Output** to **Save** and press **Export**:  \n\n   ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327779.png)  \n\n4. Open the downloaded file in _Notepad++_ or other text editor and change the http:// links to the https://.  \n\n5. Return to the main page of the Adminer by clicking on the database name in the top:  \n\n   ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327780.png)  \n\n6. Select all the tables in Adminer and press **DROP** to remove them.  \n\n   ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327781.png)  \n\n7. Press **IMPORT** in the top left corner.  \n\n8. Choose the database file with changed links and press **EXECUTE**. The updated database will be uploaded.\n\n  \n\nHacked website\n------------------\n\n\nIf the website is hacked/infected, the least you can do is replace default files, disable the theme and plugins. Follow these steps:\n\n1. Remove the **wp-admin** and **wp-includes** folders with help of the **Remove** form in the **Files\u0026Backups** tab:  \n\n   ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327763.png)  \n\n2. Remove all the files in the root directory except for **wp-config.php** and **debugger.php** (it is easier to do through the FTP access).  \n\n3. Check that **wp-config.php** does not contain any malicious code. Remove the malicious code from it if needed.  \n\n4. Press **Replace Default Files** in Debugger:  \n\n    ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327762.png)   \n\n5. Check and save the name of the current theme on the website (you can check it in the database) and press **Activate Clean 2019 Theme**. Even if the TwentyNineteen theme is infected, its files will be replaced and the clean TwentyNineteen theme will be activated.  \n\n6. You can also disable some or all plugins in the database and press the **Flush Cache** button, in the **EasyWP** tab, to activate the changes on the website.\n\n7. Optionally, you can also try and search for malicious code in the database. It is not rare that the website URL is simply replaced with malicious links in the **siteurl** and **home** entries. Searching for _\"\u003cscript\"_ in the database can also help find some malicious links.\n\n  \n\nBackups and Restorations\n============================\n\nBack up a website\n------------------------\n\n1. Go to the **Files\u0026Backups** tab _\u003e\u003e_ **Compress** form and press **Submit**. The root directory will be compressed in a ZIP file like _wp-files\\_2019-09-29\\_18:59:57.zip_. You can customize it however you want (back up a certain folder, name your backup differently):  \n\n   ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327761.png)  \n\n2. Access the website via FTP and **download the generated backup**.  \n\n3. Press **Enable Adminer** in the **Database** tab in Debugger to access the database.  \n\n4. Click **Export** in the top left corner of the Adminer interface:  \n\n   ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327778.png)  \n\n5. Change the **Output** to **save** (.sql dump will be generated) or **gzip** (.sql.gz backup will be generated) and press **Export**:  \n\n   ![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327779.png)  \n\n   \n\nThat's it! You have the files and database backups now.\n\n\n\n\nRestore a website from a backup\n-----------------------------------\n\n\nIt is possible to restore a website from a manual backup with the help of the **Adminer** menu and **Extract a ZIP archive** option.\n\nPlease follow this instruction:\n\n1.  The minimum files that should be present to restore a website are the **wp-content** folder and the **.sql database** **file**. (If you already have a backup, you can check its content with **View content of a ZIP archive** form.)\n2.  It is recommended that you leave **only** the **wp-content** folder in a zip archive to avoid issues with default files and files inside the website's root directory.\n\n3.  Rename the **wp\\_content** folder to **wp\\_content\\_old** on the end of the website you want to replace.\n4.  Check the **wp-content** folder you want to restore for popular caching plugins, their additional files, and the **mu-plugins** folder. It is **necessary to remove mu-plugins** to avoid issues. The caching plugins can be removed now or later after the backup is restored.  \n\n5.  Compress the **wp-content** folder and upload the archive to the destination website. You can do it via FTP.\n\n6.  Extract the ZIP file with the help of Debugger: click **Files\u0026Backups** \u003e **Extract a ZIP archive** option. If you extract the full backup, make sure **not to replace wp-config.php** accidentally (rename it to **wp-config.php\\_bak** or download it to your local PC).\n7.  If the website is hosted on EasyWP, once the backup was uploaded and restored, press **Fix EasyWP Plugin** in the **EasyWP** tab of Debugger to enable it on the new website.\n8.  In the **Adminer** interface drop all the existing tables there and import the database file from the backup.\n9.  If the database prefix is not _wp\\__, change the prefix in the wp-config.php file.\n10.  Click **Disable Adminer** once done.\n11.  Now the website should be working. If there is 500 error somewhere, feel free to enable debug and check what's wrong.\n\n  \n\n# How to fix file system\n\n\u003e The flow described below is related to the bug on EasyWP when some files were present via FTP but did not reflect on the website. This bug is fixed now so the information is mostly FYI.\n\nTo fix filesystem, take the following steps:\n\n1\\. Press **Fix Filesystem** and flush the website cache:\n\n\n![](https://raw.githubusercontent.com/SolidAlloy/easywp-debugger/master/readme-images/212327760.png)  \n\n2\\. If the issue persists, try fixing filesystem and flushing cache 3-4 more times.  \n\n3\\. If it doesn't help too, check the PHP error on the website. If the \"missing\" file is one of the WordPress default files, replace the default files. If the missing file is one of the theme/plugin files:\n\n*   copy the path to the missing file somewhere;\n*   disable the plugin/theme that is producing the error;\n*   go to the **WP Admin Dashboard** and install the **File Manager** plugin;\n*   open a folder where the missing file is located (yes, this simple);\n*   the missing file should re-appear now, so try activating the plugin/theme.\n\n\n\n# Repository structure and API\n\n- The main file of the repository is debugger.php. It is self-dependent and is the only file you need to upload to debug websites.\n- debugger.min.php is the minified version of debugger.php\n- You can upload debugger-generator.php to a hosting and open it in a browser to get a debugger file with randomized name and password each time.\n- Each time a login attempt to debugger happens, it sends the domain it is uploaded to and its file name to a remote API. The API waits for some time (2 hours by default) and then accesses debugger by the URL that was passed earlier to remove it from the hosting. It is done for security reasons so that debugger is removed even if the user forgot to remove the file.\n- The API code is located in the easywp-cron folder and can be installed on a hosting with Python support.\n- Debugger sometimes needs to upload additional files to enable some features (e.g. Adminer). All the files are hosted on CDN and located in the cdn-files folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidalloy%2Feasywp-debugger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolidalloy%2Feasywp-debugger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidalloy%2Feasywp-debugger/lists"}