2015-02-02 5 views
0

노력없이 설치 스크립트를 디버그하려고합니다. foreach 루프 내에 출력을 얻으려고하면 Mage :: Log() 파일에 결과가 없습니다.Magento가 설치 스크립트를 디버그 할 수 없습니다.

<?php 
$installer = $this; 
$installer->startSetup(); 
$attrCodes = ['attr1', 'attr2', 'attr3']; 
$objCatalogEavSetup = Mage::getResourceModel('catalog/eav_mysql4_setup', 'core_setup'); 

Mage::log('hello before foreach'); 
// get all attributes 
foreach ($attrCodes as $attrCode) { 
    Mage::log('Attribute code: ' . $attrCode); 
} 

Mage::log('hello after foreach'); 
$installer->endSetup(); 

foreach 루프가 발생하기 전에 로그 정보를 볼 수 있습니다. 하지만 그 루프 안팎에 정보가 없습니다.

설치 스크립트를 디버그 할 수 있습니까? 필자는 보통 PHPStorm과 함께 작업하고 내부 디버거를 사용합니다. 하지만 PHPStorm 또는 Mage :: Log()를 사용하여 설치 스크립트를 디버깅 할 수없는 것 같습니다.

편집 :
나는이 혼란을 완전히 유감스럽게 생각합니다.
루프 위의 주석 행에 크레딧을주지 않았으므로 여기에서 코드를 줄이기로 결정했습니다.
하지만 사실은 라인 업 코멘트로 업그레이드 스크립트를 호출 할 수 없다는 것입니다.
그것이 내 문제의 원인입니다. 줄 주석을/**/블록 주석으로 변경해야합니다. 이제 작동합니다.

전에 magento로이 문제에 부딪치지 마십시오.

+1

을 당신은 당신이 foreach는 전에 로그를 볼 수 있습니다 말했지만 더 중요한 것은, 당신을 당신이 배열을 만들 때 당신이 편집을 시도해야한다 ** foreach 후에 ** 정보를 참조하십시오? 그렇지 않다면 ** ** foreach에서 ** 오류가 발생했음을 의미합니다. –

답변

0

동의 함, "Tipo"로 문제가 foreach 루프에 있습니다.

$attrCodes = array('attr1', 'attr2', 'attr3'); 
+0

나는 그렇게 생각하지 않는다. 서버가 새로운 배열'[]'표기법을 인식하지 못하면, OP는 ** 처음 **'Mage :: log' 전에 오류 **를 보게됩니다. –

+1

인식되지 않으면 경고 또는 통지를 받게됩니다. 오류가 아니지만 배열이 아닌 것을 foreach하기 위해 변수를 전달하면 오류가 발생합니다 ... – imso077

+0

Mhm, 테스트를 마쳤으므로 완전히 옳습니다. 나는 파서로부터'예기치 못한'을 제외시켰다. –

0

이 코드를 시도하고 을 확인하십시오 :

$attrCodes = array('attr1', 'attr2', 'attr3'); 
Mage::log('hello before foreach'); 
foreach ($attrCodes as $attrCode) { 
    Mage::log('Attribute code: ' . $attrCode); 
} 
Mage::log('hello after foreach'); 
관련 문제