I have been trying to import an .xml file from my old WordPress to a new one. I have the following settings in php.ini:
- upload_max_filesize = 64M
- post_max_size = 90M
- memory_limit = 128M
But when I click on the Upload File and Import button Im getting a blank page. No errors or anything.
Anyone has any idea how to solve this? Thanks.
UPDATE:
After turning on the error display which was suggested below I was able to get the following error:
Fatal error: Class 'DOMDocument' not found in /var/www/html/wp-content/plugins/wordpress-importer/parsers.php on line 61
which I was then able to fix by installing php-xml.
This question in its original form did not provide enough information to justify actually trying to guess the solution.
Therefore I felt the most relevant answer was some general troubleshooting steps that may shed more light on a similar situation – my focus is on tips that may help in this particular situation, but since it is going to be rather lengthy anyway I do include some more general tips as well.
The OP is not actually asking for alternatives to the wordpress import / export function, but since this is a migration gone sour (plus the fact that the wordpress import / export feature leaves a lot to desire), I will try to answer Alans question regarding alternative ways to migrate wordpress between servers / locations / domains as well.
At risk of stating the obvious: This answer is going to be long!
Debugging wordpress errors in general
Step 1. Make sure you can see what goes wrong
Enable debug mode, and make sure
display_errors
is enabled, and an appropriateerror_reporting
level is defined. This is vital to any wordpress development.Open
wp-config.php
and find this line:Replace it with:
…if for some reason the line isn’t there already, just insert it somewhere above the line saying.
This should allow you to see some more information about most (php-)errors.
Notes:
WP_DEBUG
totrue
will automatically enabledisplay_errors
– however I have found the above to cover some edge cases where errors where not shown in spite ofWP_DEBUG
beingtrue
.WP_DEBUG
conditionally, for example by IP:define('WP_DEBUG', $_SERVER['REMOTE_ADDR'] === '123.123.123.123');
(obviously substituting your actual IP)If you do see errors referencing one of your plugins as soon as you enable debug mode my recommendation is to either contact the plugin developer regarding the issue, or simply uninstall the plugin and find another one that satisfies your need. Plugins from developers who didn’t even care to use debug mode during development are highly likely to also contain security issues and / or be sub standard with regards to future- or third-party compatibility.
Step 2. Reproduce the error
Whatever you did to make the problem happen – do it again. This should give you something to work with, for example by simply pasting it on google and see what comes up. Chances are you’re not the first to experience whatever problem your are having.
If you still get no visible errors try to right click the “nothingness” and view the page source in a plaintext editor. Sometimes errors can be hidden inside an attribute, or behind an element on the screen.
You can also try to insert some intentionally broken code in
wp-config.php
to confirm that errors will in fact be printed. For example typethis_function_surely_does_not_exist();
right after theini_set()
directives.Some hosts restrict the use of
ini_set()
, so if things still aren’t working, but you do not see any errors try to find out how you can set the relevantphp.ini
settings – it may be in your hosting providers control panel (cPanel, Plesk etc.), you may have direct access to your php.ini via http://FTP... or they may offer no way to set it (find a different provider at once!)It is also possible that you cannot change the value, but errors are logged somewhere in your providers panel by default.
If you get a completely white browser window it is likely that you have a fatal error somewhere – or a configuration problem on the server itself. This is outside the scope of this answer, so if the suggestions regarding increasing limits in the next section doesn’t work, try to google “WSOD” to get started.
Find actual limits and settings
Do not trust that just because you have a file called
php.ini
that contains a line sayingmemory_limit = 128M
your memory limit is actually 128M. This can be set in so many different ways that the only reliable way to know is to ask php what its current memory limit is. This is true for mostphp.ini
-settings!To get a fair idea what your working environment looks like create a file (preferably in the root of your wordpress install) called
phpinfo.php
, with the following content:You should be aware that all of the above values can be changed during execution of a script – and some (poor quality) plugins actually will. I’ve seen plugins try to increase the memory_limit for instance – which is all fine and dandy, except 6-7 years pass, and a plugin “increasing” the memory limit to 32MB actually messes up the installation, because nowadays 64MB is needed for a pretty basic wordpress install, and 128MB would be a more reasonable minimum for most. The problem with this is that the only way to actually know the values for sure at any given point of execution is to insert the above right at that point.
Some very common reason for errors that happen “on occasion”, particularly in connection with imports or file uploads is that either
memory_limit
,post_max_size
orupload_max_filesize
is set too low – you can try to increase them usingini_set()
calls inwp-config.php
:Again your host may completely prevent you from affecting your limits using these functions, but may provide another way for you to set them.
If that doesn’t work either, try disabling as many plugins as possible, and as a last resort switch to a default theme – but be prepared to lose widgets and a bunch of settings if things get to that.
If you’re still stuck at square one ask a question on Stack Overflow, and be very verbose about exactly what you did before it all went south 😉
Cloning / Migrating / Moving or Backing up a wordpress site
There are a lot of backup / migration plugins out there. If you are inexperienced working with files, databases and the like your best bet is probably to go with one of those. I will not recommend any specific plugin as changes are too frequent and I personally always do it manually – a google search should yield plenty of relevant results though, and I’m sure many of them can get the job done in most situations.
However, if like me, you prefer to do it manually to understand (and control) the process, here is the method I use to move, rename, clone or back up wordpress installations routinely – it should work for almost any standalone installation (ie. if you’re trying to move a multisite you should probably go look for another guide).
These instructions should work whether you are
The basic steps are:
This requires that you have access to:
All decent hosting plans, and nearly all inexpensive shared hosting plans come with phpMyAdmin and FTP access. VPS’, private servers etc. obviously comes with direct file and database access which will be even better (or at least faster).
If you do not have access to the above wherever your site is hosted, it is likely because you bought your site from someone who does not want you to move it away (usually because they designed your website for free or at a very low cost, and need you to stay with them to get back their investment). If that is the case you can try one of the many backup / migration plugins, but chances are they don’t even allow you to install plugins, so you’ll have to contact them and work out some agreement instead.
(if you do not have access to your database, but you do have access to your files you can install phpMyAdmin yourself – but how to do that is way outside the scope of this answer)
Note that depending on what operation you are actually doing, some steps can be skipped – which you can feel free to do once you understand the process, and why each step is (sometimes) required – but if this is your first time just start from the top and work your way through each step.
Step 1. Get a copy of all files
You’ll want to get all files in the “root” of your wordpress installation. That is the folder containing
wp-content
,wp-admin
andwp-includes
plus about 15-20 files. Make sure you get hidden files too (for example the file.htaccess
will likely be hidden by default if you use FTP – in some cases this file is completely irrelevant, but in others it can be essential, so just make sure you get everything)If your hosting provider has some sort of file manager you may want to try that first. A lot of file managers offer the option to up- or download folders as a single compressed archive – which will be a lot faster than downloading all files individually.
If you have a VPS or any solution with SSH or some other form of console access, use that and navigate to the “root” of your installation, then zip everything up – something like
zip -r my_wp_backup.zip .
should do. Download the file using whatever means you have.If you only have FTP access to your files, it may take a while, but you simply log in with FTP (my favorite FTP client is FileZilla, because it’s easy to use, and allows several simultaneous transfers… but any client should be fine). Navigate to the “root” of wordpress and transfer all files to a local folder on your computer (don’t forget to show hidden files!)
Step 2. Get a copy of the entire database
If you have access to phpMyAdmin through your provider use that – it is by far the easiest, and I have never had a problem, except with extremely special databases or extremely old versions of phpMyAdmin.
Just log in to phpMyAdmin, select your database, click export and accept the defaults (options are very different depending on the version, but the defaults should be fine for any “normal” wordpress database). This should give you either a file download with a name ending in “.sql” – or a big text-field with huge amount of text in it. If you get the latter just copy it to a regular text file on your local computer – notepad, notepad++ or any other plain text editor will work (ie. don’t use word, google docs or any other rich text editor!)
If you don’t have access to phpMyAdmin you can either install it (which I’m not going to describe), or you must find some other way to export the database, for example:
mysqldump -u your_database_username -p your_db_name > my_backup.sql
– if you don’t know the name of your database, take a look in wp-config.php (also contains your username and password if you don’t know those)Step 3. Do necessary corrections in files
You should now have a complete backup on your local disk.
phpinfo.php
file above if your provider doesn’t give you any clues)localhost
is sufficient in most cases, but some providers have dedicated mysql-servers that require you to connect to some other hostname)Correct your
wp-config.php
file – the relevant lines are:Though it’s rather rare some plugins do write information in files that needs to be updated, so if the absolute path of your wordpress root folder, or the absolute URL of your installation is changing in the process of migrating you should also do a complete search and replace for those:
/var/www/www.example.com/web/blog
and your new absolute path is/var/www/blog.example.com/public_html
then search-and-replace those throughout all files. Do not include a trailing slash!http://www.example.com/blog
and the new URL is going to behttp://blog.example.com
do a search forwww.example.com/blog
replacing withblog.example.com
. Do not includehttp://
and do not include a trailing slash!Note that if for some reason you are in a situation where you do not know your old absolute path and / or URL you can find them in the database, so do step 5 first, and look in the
prefix_options
table for the valuessiteurl
(your absolute URL) andupload_path
will usually contain your absolute path (plus/wp-content/uploads
) – if it doesn’t then there will probably be other rows in the table that can tell you what the path was, look for something that starts with/var/www
or/home/something
.Step 4. Upload files to new server or new location
As in step 1 your options may vary, but the point is to get all files uploaded to whatever folder is going to be your new root. Use whatever means you have available to do so.
Do not give in to the temptation to “try” the site out after uploading files – though unlikely it can have unforeseen consequences if you visit before all steps are completed!
Step 5. Load up the database on the new server
Again, options vary:
SQL
tab instead, and just paste the entire content directly in the big text field.mysql -u your_database_username -p your_new_db_name < my_backup.sql
Step 6. Do necessary corrections in the database
If you’re restoring a backup to the same server and location you are done.
However, if you are migrating to a different server or a different URL you need to be aware that WordPress itself, as well as a lot of plugins writes your absolute URL in a lot (thousands) of places in the database, and your absolute path is likely to also be present in at least a couple of rows.
You also need to be aware that a lot of plugins, as well as some core wordpress functions use the php function
serialize
to store complex data easily in the database. That format is very sensitive to changes, so a “regular” search and replace is very (very!) likely to break everything.Luckily there is a free tool specifically designed with this in mind. I have no affiliation, but I cannot recommend interconnect/it database search and replace enough. It is well-maintained, super user friendly, and I have never personally experienced it mess anything up.
Download it using the link above, unzip it, rename the folder to
something_random_for_security
and upload it to your wordpress root folder. Then go tohttp://blog.example.com/something_random_for_security
in your browser (obviously substituting relevant parts of the URL).You’ll be presented with a neat graphical interface, and it has probably already filled in your database details for you (by reading your
wp-config.php
).At the top of the screen there’s a search field and a replace field. Don’t mess with anything else, unless of course it actually failed to get your database information automaticall.
Like for files you need to search for:
http://
and trailing slash)You can use the “Dry run” button first to see what will be changed, and if any obvious problems might arise – after that just click the “Live run” button and it’ll chew through your entire database replacing in a
serialize()
-safe way where relevant.Step 6,5 Broken permalinks
If you have moved your site from one folder to another folder (or up or down a level), then permalinks / “pretty URLs” may not work (ie. your front page is fine but everything else is one big error). This is because of the rules in that “hidden”
.htaccess
-file getting “confused”. The fix is very simple – just visit the “Settings” -> “Permalinks” in the wordpress admin… you don’t need to make any changes, the file is automatically refreshed as soon as you visit the page.Done
Check that everything works, then go celebrate…
Your directives are in the wrong format. Try
If those don’t work, ask your webhost; you may not be able to make changes in php.ini.
And try running debug https://codex.wordpress.org/Debugging_in_WordPress to catch PHP errors that may point the way to the issue and solution.
The only way to find out what is causing the blank screen is check your server error log.
And also take reference from here
try this,after making the necessary changes for uploading a file in php or wordpress i.e
other steps,
finally check,
These steps may help:
wp-includes/deprecated.php
there is a function namedwp_get_http()
with@set_time_limit( 60 );
, change this to0
to disable limitation.This worked for me:
No images imported
Wordpress Tools > Export did not attach images even though settings state it to be true. The import process on the target site crashes. To fix that I installed the DeMomentSomTres Export plugin on the exporting site that forces the import process on your target site to make a connection to the export site and then pull the images over. That worked well.
No content when editing
However, when editing the imported posts, the content wysiwyg editor box appeared empty even though the text would display on the front end. Initially I thought it was a database issue. Then, I tried deactivating Classic Editor plugin and edited a post. Whaa-la the content appeared in edit mode. Next, after re-activating Classic Editor plugin, the content stuck. All good.
I got the same behavior today while exporting All Posts and Media from a client site using the usual WordPress Importer.
I tried changing the PHP.ini settings suggested in other answers, but that didn’t help probably because they can’t be overridden. Importer will stop showing the loading icon after 1 minute or two. No errors appeared even when I set DEBUG to true.
However, when I checked the wp-content/uploads folder I could see some of the folders and images were uploaded (check modified date) yet the execution timeout stops the importer before it can finish.
My solution was to keep importing the same file again and again until the whole thing is finally imported. This works fine because WordPress Importer won’t import a Media or a Post again if it’s already imported/exists.
So even if there is a timeout setting you can’t change, multiple attempts will get it done unless you have huge media files exceeding max file size.
Of course, if it’s a huge amount of images you should find another solution.