Magento

Toggle view
How to Solve Magento 500 Internal Server Errors

How to Solve Magento 500 Internal Server Errors

Many users encounter some weird Magento 500 Internal Server Errors (Error type 500). I will try to list the most common solutions. These errors are not always caused by the same reason. You should try to take a look at your server’s error logs to get some help about this error.

You can get additional info about the errors by Turning on Developer Mode. Look in the Magento bootstrap file (index.php), you’ll see lines similar to the following

#Mage::setIsDeveloperMode(true);
#ini_set(‘display_errors’, 1);

Uncomment these. In a production system, you’d never want to have your errors display to the browser, but while developing having an errors and warnings thrown immediately in your face is invaluable. This way, you will see the actually problem which lead to the Internal Error Server. In almost cases, the reason is that there is an exception throw after output is sent to browser.

Solution #1

This error might be caused because you have not set the correct permissions for the magento folders. To solve this go to File Manager and then change the file permission of index.php file from 664 to 644.  Also change the permissions of downloader/index.php file to 644 as well otherwise when you will try to access System > Magento Connect >Magento Connect Manager (after magento installation) by logging to magento admin,  you will get 500 Internal Server Error.

You can also try this tool, it’s a magento cleanup utility. It will set the correct permissions for your complete magento installation:

  1. Download it
  2. Unzip magento-cleanup.php to the root directory of your magento installation
  3. Browse to http://yourdomain.com/magento/magento-cleanup.php

Solution #2

Your server does not support some of the magento specifications. You can easily test this using the magento check utility. Follow the steps below to check your server’s software, if there is an incompatibility this utility will show it.

  1. Download it
  2. Unzip magento-check.php to the root directory of your magento installation
  3. Browse to http://yourdomain.com/magento/magento-check.php

Solution #3

If you are getting weird 500 internal server errors on specific pages of your site, it might be a matter of resources. I was getting internal server erros on some product pages and on the http://yourdomain.com/checkout/onepage. I found out that the .htacess file of my magento installation was somehow reset and the php_value memory_limit value was set to 32M as soon as I raised it, the internal server errors vanished! You should use at least 256M for over 600-700 SKUs. Magento is very resource hungry and it is easy to get these kind of errors if you try to save some bucks from the hosting.

Solution #4

Htaccess file which is located at Magento root folder. It will be this case if you meet Internal Server Error on every page. Try to remove it for testing purpose
If your website was running file for a long time, then it must be a change at Server side, just submit a ticket to Hosting Company.

Solution #5 (Comment from Huberto)

If the curl extension is missing you can get 500 Internal server error. You can install it using the command below:
apt-get install curl libcurl3 libcurl3-dev php5-curl

Magento: List categories which have the option “Include in navigation menu” set to “No”

Magento: List categories which have the option “Include in navigation menu” set to “No”

The following source code came in handy for me, when I decided I wanted to show only the top level category in the top navigation menu of a magento store, and only show the child categories in a page whenever the top level category is clicked. This is very useful if one of your top categories contains a lot of subcategories, that will create a giant list in the drop-down menu when the visitor hovers over it.

First you have to set the sub categories as active in the magento administrator panel, but the option “Include in navigation menu” should remain switched off. Then you use the following source code in a magento template, I used the “view.phtml”.

<?php
$_category  = $this->getCurrentCategory();
$collection = Mage::getModel('catalog/category')
->getCategories($_category->entity_id, 0, false, false,false );
$helper = Mage::helper('catalog/category');
?>

<ul>
<?php foreach ($collection as $cat):?>
<?php if($_category->getIsActive()):?>
<?php
$cur_category = Mage::getModel('catalog/category')->load($cat->getId());
$_img = $cur_category->getImageUrl();
?>
<li>
<a href="<?php echo $helper->getCategoryUrl($cur_category); ?>">
<img src="<?php echo $_img; ?>" title="$cur_category->getName()"/>
<cite> <?php echo $cur_category->getName(); ?> </cite>
</a>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>