>PROBLEM
The scenary: the WordPress dashboard alarms that it is required to update some plugins.
Then you update the first plugin, the second, the third and suddenly the site stops working, returning code HTTP 500 or another message, and you loose access to it.
If there is no access, there is no dashboard to handle the situation.
>SOLUTION
Sometimes happens that a plugin's update conflicts with others or your site's environment, like php's version, etc.
A solution consists moving all plugins to another folder out your WordPress's folder on the server.
After that, try to access your site and in case of success you may be sure that it was a plugin conflict.
Now, we need a method to restore the plugins at the same time we discover which of them is responsible for the site's crash.
>FIXING
The idea is to move all the plugins to a temporary folder, and then, after you've gained access again to your site, you may point to the dashboard.
At the dashboard, go to plugins and installed plugins.
You'll get a page with many warnings since the plugins directory is empty.
Refresh the page, getting a blank page like that when you started your site from scratch.
Don't panic.
Now, let's discover which plugin is responsible for the issue.
Pick one plugin's folder at once and copy it back from the temporary folder to the original source's folder, for instance:
from
/temp/akismet
to
/public_html/yourSite//wp-content/plugins/akismet
After that, go back to your dashboard and refresh the "installed plugins" page.
The plugin is gonna appear there as usual. Activate it.
If plugin activates succesfully, go to the next.
Repeat the same procedure for each plugin until you get the one that crashes your site.
When this happens, usually you'll have to repeat the whole process again, moving out all the plugins and reintroducing one by one and testing.
The one which crashed your site will be skipped, including the future installations, until you discover the reason of the issue.
Sometimes it is due an old environment requiring update or upgrade, a more "drastic update", like php version.
In order to make the things easier when using ftp connections, you may use command line which helps to make things faster.
Here is some code snippet suggestion:
- moving all at once:
rnfr /public_html/pomar/wp-content/plugins
rnto /temp/plugins
- moving from original source place to a temporary folder:
rnfr /public_html/pomar/wp-content/plugins/akismet
rnto /temp/akismet
- moving back from the temporary folder to the original folder:
rnfr /temp/akismet
rnto /public_html/pomar/wp-content/plugins/akismet
- to create a temporary folder, do:
mkd /temp
- for more information check:
https://en.wikipedia.org/wiki/List_of_FTP_commands
https://www.cs.colostate.edu/helpdocs/ftp.html
http://ftpguide.com/
>ftp command summary
@FROM: https://en.wikipedia.org/wiki/List_of_FTP_commands
abor # abort a file transfer
abor # abort an active file transfer.
acct* # send account information
appe # append to a remote file
appe # append.
cdup # change remote working directory to parent directory
cdup # change to parent directory.
cdup # cwd to the parent of the current directory
cwd # change working directory
cwd # rfc 697: change working directory.
dele # delete a remote file
dele # delete file.
eprt # rfc 2428: specifies an extended address and port to which the server should connect.
epsv # rfc 2428: enter extended passive mode.
feat # rfc 2389: get the feature list implemented by the server.
help # return help on using the server
help # returns usage documentation on a command if specified, else a general help document is returned.
list # list remote files
list # returns information of a file or directory if specified, else information of the current working directory is returned.
mdtm # return the modification time of a file
mdtm # rfc 3659: return the last-modified time of a specified file.
mkd # make a remote directory
mkd # make directory.
mlsd # rfc 3659: lists the contents of a directory if a directory is named.
mlst # rfc 3659: provides data about exactly the object named on its command line, and no others.
mode # set file transfer mode
mode # set transfer mode
mode # sets the transfer mode (stream, block, or compressed).
nlst # name list of remote directory
nlst # returns a list of file names in a specified directory.
noop # do nothing
noop # no operation (dummy packet, used mostly on keepalives).
opts # rfc 2389: select options for a feature (for example opts utf8 on).
pass # authentication password.
pass # send password
pasv # enter passive mode.
port # open a data port
port # specifies an address and port to which the server should connect.
pwd # print working directory on remote machine
pwd # print working directory. returns the current directory of the host.
quit # disconnect.
quit # terminate ftp session and exit
rein* # reinitialize the connection
rest # rfc 3659: restart transfer from the specified point.
retr # retrieve a copy of the file
retr # retrieve a remote file
rmd # remove a directory.
rmd # remove a remote directory
rnfr # rename from
rnfr # rename from.
rnto # rename to
rnto # rename to.
site # send site specific command to remote server
site # sends site specific commands to remote server (like site idle 60 or site umask 002). inspect site help output for complete list of supported commands.
size # rfc 3659: return the size of a file.
size # show size of remote file
stat # return server status
stat # returns the current status.
stor # accept the data and to store the data as a file at the server site
stor # store a file on the remote host
stou # store a file uniquely
stou # store file uniquely.
stru # set file transfer structure
stru # set file transfer structure.
syst # return system type
syst # return system type.
type # set file transfer type
type # sets the transfer mode (ascii/binary).
user # authentication username.
user # send new user information
xcup # rfc 775: change to the parent of the current working directory
xmkd # rfc 775: make a directory
xpwd # rfc 775: print the current working directory
xrmd # rfc 775: remove the directory