Installing Magento without Mcrypt
Disclaimer: in a production environment, spend the extra time and resources to meet Magento’s requirements. This post is about setting up a development environment.
I have had one hell of a time trying to get Magento up and running on my development server. I have probably spent about 5 hours fighting with mcrypt and for some reason, it is just not playing nicely with my setup (PHP 5.3, with everything compiled manually). I brought in a server guru as well, and he had the same problem. I think we both tore out some hair.
I’ve hacked together some steps to get it up and running for developers who want to get their hands dirty quickly.
Making Magento PHP 5.3 Compatible
If you are running PHP 5.3, it takes a few tweaks to get Magento up and running.
First one: edit /lib/Varien/Object.php, and find
public function __toString(array $arrAttributes = array(), $valueSeparator=',')
with replace it with
public function __invoke(array $arrAttributes = array(), $valueSeparator=',')
Step Two: Edit /index.php and change
error_reporting(E_ALL | E_STRICT);
to
error_reporting(E_ALL ^ E_DEPRECATED);
This may not be ideal, but it worked for me on my local machine. Before I did this, I went in and tried to spot-treat several errors as they came up. I was hoping it was just one, but after a few I caved and lowered the error reporting.
Installing Magento without Mcrypt
This extension was a major pain in the ass to (not) install. I want my day back. Anyway, I managed to isolate the sections to modify to avoid requiring this extension.
Step One: edit /app/code/core/Mage/Install/Installer/Env.php, and find
Mage::getSingleton('install/session')->addError(
Mage::helper('install')->__('PHP Extension "%s" must be loaded', $extension)
);
just above it, add
if ($extension == 'mcrypt') {
return true;
}
Step Two: create /lib/Varien/Crypt/Base64.php and throw this into it
<?php
class Varien_Crypt_Base64 extends Varien_Crypt_Abstract {
public function __construct(array $data=array()) {
parent::__construct($data);
}
public function init($key) {
return $this;
}
public function encrypt($data) {
if (!strlen($data)) {
return $data;
}
return base64_encode($data);
}
public function decrypt($data) {
if (!strlen($data)) {
return $data;
}
return base64_decode($data);
}
}
Last Step: edit /lib/Varien/Crypt.php and change
static public function factory($method='mcrypt')
with
static public function factory($method='base64')
I’m not too sure why it’s not a configuration option, but oh well.
And yeah, this is by no means secure. Far from it. It works well enough to use locally and that’s all I really care about. Hopefully this helps at least one other developer who is fighting with dependency hell. If I missed out any steps I apologize. I’ve been at this way too long.

I’m sick of Mcrypt too. Thanks for this tutorial.
simple awesome
Hi
Good work, what version of magento was it that you did this on ?
HI!This is great tutorial.Keep up the good work.I have one question.Can you please help me disable mcrypt on magento 1.4.0.1.I just can’t get it to work.