Tuesday, January 19, 2010

Magento after installtion can not able to login

Solution:
I googled and found these solutions:-

a) Use 127.0.0.1 instead of localhost in your url, i.e. using http://127.0.0.1/magento/index.php/admin instead of http://localhost/magento/index.php/admin . But this didn’t solve my problem.

b) Since I am using Linux, I was suggested to open "hosts" file from /etc/hosts and have 127.0.0.1 point to something like magento.localhost or even 127.0.0.1 point to http://www.localhost.com.
But this option i not tested.

c) This solution finally helped me out of this problem. The solution was to modify the core Magento code. Open app/code/core/Mage/Core/Model/Session/Abstract/Varien.php.
Comment out the lines 80 to 83. The line number may vary according to the Magento version. But these lines are present somewhere near line 80. You have to comment the comma (,) in line: $this->getCookie()->getPath()//,

// set session cookie params
session_set_cookie_params(
$this->getCookie()->getLifetime(),
$this->getCookie()->getPath()//,
//$this->getCookie()->getDomain(),
//$this->getCookie()->isSecure(),
//$this->getCookie()->getHttponly()
);

Magento installtion Deprecated error for php5.3

Deprecated errors

a) split is deprecated.

to override these issue please make following changes of reporting error
y:\magento\index.php in these file replace error_reporting with following one
error_reporting(E_ALL & E_STRICT & ~E_DEPRECATED);

y:\magento\downloader\Maged\Pear.php in these file replace error_reporting with following one
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

y:\magento\lib\Varien\Pear.php in these file replace error_reporting with following one
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

Saturday, January 16, 2010

Magento not working on PHP 5.3

Fatal error: Method Varien_Object::__tostring() cannot take arguments in /magento/lib/Varien/Object.php
Change 1) /lib/Varien/Object.php (Line 484)
Change from
public function ___toString(array $arrAttributes = array(), $valueSeparator=’,')
To this
public function __invoke(array $arrAttributes = array(), $valueSeparator=’,')
Change 2) File /app/code/core/Mage/Core/Controller/Request/Http.php (Line 274)
Change from
$host = split(‘:’, $_SERVER['HTTP_HOST']);
To this
$host = explode(‘:’, $_SERVER['HTTP_HOST']);

Thursday, January 14, 2010

PHP5 foreach loop using reference variable

// In PHP5 foreach loop using reference variable
// Example
$arr = array(2,3,4,5);
print_r($arr); // Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 )
foreach ($arr as &$value) {
if($value == 4) { $value = 77; }
}
print_r($arr); // Array ( [0] => 2 [1] => 3 [2] => 77 [3] => 5 )

Wednesday, January 13, 2010

PHP Variables passed by value or by reference?

//PHP Variables passed by value or by reference?
//
//Variable is passed by value.
// for PHP5 Object passed by Reference, Object handler (Object variable) passed by // value

// for PHP4 Object passed by value, Object handler (Object variable) passed by value

//example

function test1($a) {
$a=2;
}

function test2(&$a) {
$a=2;
}

$a = 1;
echo $a; // output 1
test1($a);
echo $a; // output 1
// as variable is passed by value

//case for passed by reference
$a = 1;
echo $a; // output 1
test2($a);
echo $a; // output 2
// as variable is passed by reference

// now interesting case about objects
// in PHP 5 Object are always passed by reference
// in PHP 4 Object are passed by value
// object handler (Object variables) are passed by value
// see example
class Test {
var $strVal = 1;

function getValue() {
return $this->strVal;
}
}

function test($obj) {
echo $obj->getValue();
$obj->strVal = 2;
}

// now test cases
$obj1 = new Test();
test($obj1);
echo " ".$obj1->strVal;
// output 1 2 (In PHP5)
// output 1 1 (In PHP4)

// now explanation
// $obj1 is new object created. $obj1 is represent the handler for that new object
// test is called then handler is passed by value and object is passed by reference
// so $obj1 and $obj are object handler pointing to same object
// so you will get out put as 1 2 in PHP 5
// in case of PHP4 output will be 1 1 because object passed by values
// so $obj1 and $obj are two object handler pointing two different instances of Test class.


// now for PHP 4 if you want to pass object as reference then just changes test method as // follows
// add the & sign before parameter

function test(&$obj) {
echo $obj->getValue();
$obj->strVal = 2;
}

About PHP5

PHP5 has improved support for OOPS when compared to PHP4. The 4 pillars of OOPS are fully supported by PHP5 i.e. Encapsulation, Inheritance, Polymorphism and abstraction. You can also create interfaces; if you have been designing classes for a
while, you know how important interfaces are.

PHP5 also provides performance improvements as it has made significant changes to its
core ‘C’ code. This means that the execution of PHP5 programs will now gain the
needed performance improvement.

PHP5 has an integrated support for SOAP as it provides in-built classes for SOAP calls.

PHP5 offers Exception handling mechanism that was missing in its earlier version. You no longer have to write your own logic to return different type of values from one function to another in case of errors. You can now surround your code by try..catch blocks and write necessary logic inside your functions and raise an Exception. You can also extend from the existing Exception class to create your own Exception class.