Magento 저장소 디버깅을위한 기본 사항


81

내 Magento 저장소를 디버깅하는 방법

이것은 지금 우리 모두와 관련이없는 질문이지만 5 년 전에 Magento SE 사이트가 존재했다면 아마도 첫 번째 질문 일 것입니다. Magento에 익숙하거나 익숙하지 않은 사용자에게는 디버깅의 기본 사항을 아는 것이 문제의 원인을 배제하는 열쇠가 될 수 있습니다. 그리고 지금 우리와 관련이 없지만, 우리는이 질문이 스스로 대답하는 방식으로 나타나는 것을 선점하고 있습니다.

내 사이트가 다운되도록 도와주세요!

  1. 내 디자인이 잘못 되었습니까?
  2. 타사 모듈에 결함이 있습니까?
  3. 왜 오류가 표시되지 않습니까?

가장 기본적인 사용자조차도 완료 할 수있는 표준화 된 디버깅 방식을 따르면 이러한 각 질문에 쉽게 대답 할 수 있습니다. Magento 저장소 디버깅의 기본 사항을 제거하는 프로세스를 통해.


5
좋은 디버거와 지능을 사용하십시오 ...
Sylvain Rayé

4
이것이 심각한 질문입니까?
davidalger

5
아니요,이 베타에서 공을 굴리는 데 도움이되는 고의적 인 자체 답변 질문입니다. 스택 교환은 자체 답변 질문을 허용 할뿐만 아니라 blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange 적극적으로 권장합니다 . @sylvain이 질문은 디버깅 프로세스를 시작하는 데 도움이되는 새로운 / 익숙하지 않은 사용자를위한 것입니다
Ben Lessani-Sonassi

@sonassi 나는 downvoted하지 않았고 당신은 더 명확한 방법으로 질문을 리팩토링했습니다. 아마도 나는 그것을 도울 수 있었다 :) 나는 SE가 Q & A 일뿐 만 아니라 알기 쉽다는 것을 몰랐다. 주요 주제에 대한 대답은 여기에 가능한 가장 깊은 문제의 표면 일뿐입니다. 디버거를 사용하고 Magento의 인턴 디스패치 프로세스가 어떻게 작동하는지 먼저 이해하고 있기 때문에 이해 한 후에 많은 문제를 해결할 수 있습니다. 그건 내 5 센트입니다. 세금 계산, 배송 방법, 블록 생성 또는 기타 문제를 해결하는 방법 : 디버깅! 인턴 과정을 배우는 것도 도움이됩니다.
Sylvain Rayé

2
이해했다. 내가 돕고 자하는 것은 더 근본적인 치명적 오류입니다. 분명히 문제의 범위는 단일 솔루션이 대답하기에는 너무 광범위합니다. 퀴크 / 작은 버그는 디버깅을 통해 진단되지만 치명적 오류의 경우 아래 에서처럼 덜 섬세한 접근 방식이 필요합니다. 그리고 그렇습니다, 나는 질문을 조정했다 :)
Ben Lessani-Sonassi

답변:


98

디버깅은 약간의 기술이지만 간단한 요법을 따르면 쉽게 마스터 할 수 있습니다.

솔루션에 도달 할 때까지 각 포인트를 따르십시오.


PHP 오류 활성화

이것은 대부분의 문제의 핵심입니다. 보안 또는 다른 이유로 인해 PHP 구성에 의해 PHP 오류 표시가 기본적으로 비활성화 될 수 있습니다.

보다 영구적 인 솔루션 또는 더 일시적인 오류로 오류를 활성화 할 수 있습니다.

영구적 인 솔루션

Apache / mod_php 사용자의 경우

문서 루트 .htaccess파일에서 맨 위에 놓으십시오.

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/var/log/system.log

Nginx / FastCGI 사용자의 경우

Nginx 가상 호스트 설정, 최종 location .php {지시어 또는 fastcgi_params파일 (지정된 경우)에서

fastcgi_param PHP_VALUE  display_startup_errors=on;
fastcgi_param PHP_VALUE  display_errors=on;
fastcgi_param PHP_VALUE  html_errors=on;
fastcgi_param PHP_VALUE  log_errors=on;
fastcgi_param PHP_VALUE  error_log=/home/path/public_html/var/log/system.log;

임시 / 범용 솔루션

모든 플랫폼

index.php문서 루트에서 Magento 부트 스트랩 을 편집하고 다음 줄의 주석을 해제하십시오.

#ini_set('display_errors', 1);

개발자 모드 사용

오류가 발생하여 갑자기 "오류 보고서"페이지를 치고 겉보기에 쓸모없는 오류 문자열 1184257287824이 표시되면 몇 가지 옵션이 있습니다.

영구적 인 솔루션

Apache / mod_php 사용자의 경우

문서 루트 .htaccess파일에서 맨 위에 놓으십시오.

SetEnv MAGE_IS_DEVELOPER_MODE true

Nginx / fastcgi 사용자의 경우

Nginx 가상 호스트 설정, 최종 location .php {지시어 또는 fastcgi_params파일 (지정된 경우)에서

fastcgi_param MAGE_IS_DEVELOPER_MODE true;

임시 / 범용 솔루션

index.php문서 루트에서 Magento 부트 스트랩 을 편집하고 if명령문을 항상 참으로 설정하거나 특정 IP에 대해 활성화하십시오.

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
}

또는

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress') {
  Mage::setIsDeveloperMode(true);
}

권한 확인

잘못된 권한은 많은 문제를 야기 할 수 있으며, 그 중 많은 부분이 언뜻보기에는 쉽지 않습니다.

예를 들어.
PHP가 ./media디렉토리에 쓸 수없고 JS 결합이 활성화 된 경우-Magento가 결합 된 파일 및 매체에 대한 연관된 ​​고유 URI를 생성 할 수 없습니다. 브라우저 소스 코드에서 찾을 수있는 것은 미디어 파일의 전체 서버 경로입니다. /home/path/public_html/media/xxx

그렇지 않으면 사이트가 정상적으로 작동하는 것처럼 보일 수 있으며 실제로 심각한 오류는 표시되지 않습니다.

이 방법은 전용 호스팅에 대해서는 안전하지만 사용자 당 Apache 프로세스가 chroot되지 않은 경우 공유 호스팅에 보안 문제가 발생할 수 있습니다.

이 예에서 SSH / FTP 사용자는 sonassi아파치 사용자이고 apache그룹은apache

Apache 그룹에 FTP / SSH 사용자 추가

가장 중요한 것은 FTP / SSH 사용자가 Apache 그룹의 일부인지 확인해야합니다 (이 예에서는 apache일반적으로 www-data).

usermod -a -G apache sonassi

FTP / SSH에 대해 많은 수의 사용자를 그룹에 계속 추가하십시오.

원래 권한 재설정

시작하기 전에 모든 권한이 올바른지 확인하십시오.

chown -R sonassi:apache /home/path/public_html/
find /home/path/public_html/ -type d -exec chmod 775 {} \;
find /home/path/public_html/ -type f -exec chmod 664 {} \;

변경 사항을 영구적으로 만들기

ACL 및 스티키 비트

Linux의 ACL을 사용하면 특정 규칙을 정의 할 수 있으며,이 경우 작성시 상속 할 권한 파일을 정의 할 수 있습니다. 스티키 비트 (후술)는 그룹 상속을 담당하지만, 우리는 ACL을 사용하는 이유 권한으로 도움이되지 않습니다.

활성 파티션에서 ACL 지원을 활성화하여 시작 하십시오. 커널이 ACL 지원으로 컴파일되었는지 확인하십시오 .

귀하의 파티션이 될 수있다 /, /home, /var또는 뭔가 다른, 적절한 대체합니다.

mount -o remount,acl /home

이제 ACL이 활성화되었으므로 ACL 규칙 및 그룹 고정 비트를 설정할 수 있습니다.

setfacl -d -m u::rwx,g::rwx,o::rx /home/path/public_html/
chmod g+s /home/path/public_html/

하지만 ACL을 지원하지 않습니다

커널이 ACL을 지원하지 않는 경우 umaskBASH, FTP 및 PHP의 런타임 설정 인 기본 파일 권한을 설정할 수도 있습니다. 마 젠토는 일반적으로 설정 umask(0)에서 index.php, 그러나,이를 변경하는 귀하의 관심에있을 것입니다.

당신의 index.php변화에 umask줄을

umask(022);

SSH의 BASH 환경에서 .bashrc또는.bash_profile

umask 022

FTP 서버의 경우 해당 설명서를 읽어야하지만 원칙은 동일합니다.


테마를 기본값으로 되돌리기

테마 나 패키지가이 문제에 대한 원인 일 수 있습니다. 바닐라 마 젠토 테마로 되 돌리는 것은 빠른 방법입니다.

** 일부 모듈은 특정 테마 기능에 따라 달라질 수 있다는 경고와 함께 제공됩니다 *

관리자 패널을 통해 아무것도 변경하지 않고 문제가있는 디렉토리의 이름을 바꾸는 것이 훨씬 간단합니다.

SSH를 통해

mv ./app/design/frontend/myBrokenTheme{,.tmp}
mv ./skin/frontend/myBrokenTheme{,.tmp}

또는 FTP 클라이언트를 통해 패키지를 탐색하고 다른 이름으로 바꾸십시오. 예.myBrokenTheme.tmp

그래도 문제가 해결되면

그런 다음 템플릿의 어떤 부분이 문제가되는지 조금 더 깊이 파고 들어야합니다. 따라서 패키지를 복원하고 각각을 테스트하여 다음을 시도하십시오.

기본적으로 프로세스는 문제가 발생한 파일을 찾을 때까지 파일 트리를 탐색 할 때 디렉토리를 점진적으로 활성화하는 것입니다.

  1. 레이아웃 디렉토리 이름을 .tmp
  2. 템플릿 디렉토리 이름을 .tmp

그런 다음 수정 사항이 나오면 레이아웃 디렉토리 내의 모든 파일 이름을 .tmp-로 변경하십시오 (SSH 사용자 ls | xargs -I {} mv {} {}.tmp또는 rename 's/^/.tmp/' *).

그런 다음 해결 될 때까지 각 파일을 1 씩 1 씩 점진적으로 활성화하십시오.

그래도 문제가 해결되지 않으면

귀하 base/default또는 enterprise/default디렉토리가 오염되었을 가능성이 있으며 알려진 깨끗한 버전으로 대체하는 것이 가장 좋습니다.

Magento의 클린 빌드를 다운로드하고 필요에 따라 디렉토리를 교체하면됩니다. SSH를 통해 다음을 수행 할 수 있습니다.

cd /home/path/public_html/
mkdir clean_mage
cd clean_mage
MAGENTO_VERSION=1.7.0.0
wget -O magento.tgz  http://www.magentocommerce.com/downloads/assets/$MAGENTO_VERSION/magento-$MAGENTO_VERSION.tar.gz
tar xvfz magento.tgz
cd /home/path/public_html/app/design/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/design/frontend/base .
cd /home/path/public_html/skin/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/skin/frontend/base .

diff변경 사항을 확인하려는 경우 두 디렉토리 를 사용할 수도 있습니다 .

diff -r base base.tmp

NB. 이 방법은 모듈 의존성이 특정 파일의 존재를 지시하므로 프로세스 중에 더 많은 오류를 발생시킵니다. 불행히도, 코스의 파.


로컬 모듈 비활성화

기본적으로 Magento는 다음 순서로 클래스를로드하는 PHP 포함 경로를 정의합니다.

Local > Community > Core

파일이 로컬에있는 경우로드하고 더 이상 수행하지 마십시오.
파일이 커뮤니티에있는 경우로드하여 더 이상 수행하지 마십시오.
다른 곳에서 파일을 찾을 수없는 경우 코어에서 파일을로드하십시오.

다시 말하지만 Magento 관리자 패널을 통해 모듈을 비활성화하는 대신 파일 수준에서이 작업을 수행하는 것이 더 실용적입니다.

일반적으로 "적절한"방법으로 모듈을 비활성화하려면 해당 ./app/etc/modules/MyModule.xml파일을 편집 하고 설정합니다 <active>false</active>. 그러나 이것이 실제로 클래스가로드되는 것을 방해하지는 않습니다.

다른 클래스가 모듈에서 지정된 클래스를 확장하는 경우 (Magento 종속성 선언을 무시하고) 확장이 비활성화되었는지 여부에 관계없이 계속로드됩니다.

다시 말해, 확장 기능을 비활성화하는 가장 좋은 방법은 디렉터리 이름을 바꾸는 것입니다.

로컬을 비활성화하여 시작

FTP를 통해 디렉토리 이름을 바꾸거나 다음 SSH 명령을 사용하십시오.

mv ./app/code/local{,.tmp}

그런 다음 커뮤니티를 비활성화하십시오.

mv ./app/code/community{,.tmp}

문제가 해결되면

그렇다면 어떤 모듈에서 오류가 발생했는지 이해하는 경우입니다. 패키지 진단에 대해 위에 제공된 예와 마찬가지로 동일한 프로세스가 적용됩니다.

따라서 X 디렉토리를 복원하고 각각을 테스트하여 다음을 시도하십시오.

본질적으로 프로세스는 오류가 다시 발생할 때까지 디렉토리 (모듈)를 하나씩 차례로 활성화하는 것입니다.

  1. 로 디렉토리에있는 모든 모듈의 이름을 변경 .tmp합니다 (SSH 사용자를위한 ls | xargs -I {} mv {} {}.tmp또는 rename 's/^/.tmp/' *)
  2. .tmp파일 이름에서 제거하여 각 모듈을 하나씩 차례로 활성화

문제가 해결되지 않은 경우

그러면 코어 자체가 오염 될 수 있습니다. 메인 마 젠토 PHP 코어는

./app/code/core
./lib

다시이 디렉토리의 이름을 바꾸고 깔끔한 변형으로 복사하십시오. SSH를 통해 위와 같이 Magento의 클린 버전을 이미 다운로드했다고 가정하면 다음을 수행 할 수 있습니다.

cd /home/path/public_html/app/code
mv core{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/code/core .

그래도 문제가 해결되지 않으면 lib디렉토리도 교체하십시오

cd /home/path/public_html
mv lib{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/lib .

이 시점에서 Magento 저장소는 수정 된 데이터베이스가있는 바닐라 설치 일뿐입니다.

일부 모델은 실제로 데이터베이스에 계속 저장됩니다 (예 : 주문 증분).이 시점에서 수동으로 편집하는 경우가됩니다. 지금까지 위의 모든 단계는 지속적인 손상없이 되돌릴 수있었습니다. 그러나 우리가 깨끗한 Magento 데이터베이스를 가져 왔을 경우 되돌릴 수없는 것으로 판명 될 수 있습니다 (백업 복원 부족).


위의 가이드는 오류를 식별하는 방법을 알려줍니다. 결과 오류를 수정하지 않습니다.

www.sonassi.com/knowledge-base/magento-debug-processwww.sonassi.com/knowledge-base/stop-magento-permissions-errors-permanently 에서 기꺼이 제공 한 콘텐츠


7
답변은 일부 Magento 사용자에게 도움이 될 수 있지만 포스터가 직접 질문에 답변 했으므로 커뮤니티 위키와 같은 Q & A 질문으로 표시되어야합니다.
Matthias Zeis 5

8
자체 답변 질문은 허용 될뿐만 아니라 SE에 의해 권장됩니다. blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange . 다른 회원을 도와 사이트를 발전시키기위한 노력으로 다른 회원을 꺾지 않고이 베타 버전의 발전을 돕기 위해 더 많은 사용자가해야합니까?
Ben Lessani-Sonassi

이 있어야하지 755644권한? 또는 당신은 특별한 추천하는 이유가 있나요 775664?
Jürgen Thelen

@Jurgen - 모든 내용은 우리의 서버 - Nginx에 / 아파치 / PHP는 항상 SSH / FTP와 같은 사용자로 실행 - 공유 / 전용 호스팅에 그것을합니다. 따라서 rwx그룹 및 다른 모든 사람이 관련이 없으므로 권한은 소유자 만 사용할 수 있습니다 . 그러나 내가 언급했듯이-모든 사람들이 서버를 올바르게 구성하지는 않습니다 (사실 매우 소수)-Apache / Nginx / PHP 사용자가 SSH / FTP 사용자와 다를 수 있습니다. 그런 다음 각 그룹은 가능한 rwx파일 을 각각 허용 합니다.
Ben Lessani-Sonassi

터미널을 사용하여 두 디렉토리를 구별하지 않으려면 다음 GUI 옵션 중 하나를 설치할 수 있습니다. askubuntu.com/questions/12473/…
pablofiumara

18

으로 트위터에 요청 하고 메타 논의 여기가 아닌 devs를위한 디버깅 자습서를 시작합니다.

먼저 Magento는 개발자 / 개발 팀이없는 판매자에게는 너무 복잡하다고 생각합니다. 그러나 당신이 용감하고 그것을 시도하고 싶다면, 우리는 당신을 돕기 위해 최선을 다하고 있습니다. 몇 가지 질문은 "어떻게하면됩니까?"의 경계에 있다고 생각합니다. "저의 작업을 해주세요. 구글에 너무 어리 석습니다."라는 말은 꽤 괜찮습니다. Google은 생각하기가 어렵다는 것을 이해합니다. Google 검색은 무엇을 알지 못하기 때문에 아직 이름을 알지 못하기 때문입니다. 이것은 마 젠토 매장을 가진 모든 사람이 할 수있는 일을 모아 보자고, 심지어 개발자가 아니더라도 말입니다.

Sonassi가 더러워지기를 원할 때 magento를 디버깅하는 방법에 대한 좋은 대답 은 이미 Sonassi의해 주어 졌지만 물건을 추가하고 상인에게 해당되는 것을 복사하려고합니다.

면책 조항 :이 게시물에 언급 된 모든 디렉토리와 파일은 magento 루트 폴더와 관련이 /var/www있지만 호스팅 제공 업체에 따라 소위 Document Root가 어디에나있을 수 있습니다 .magento를 찾을 수없는 경우 제공 업체에 문의하십시오 !

개발 모드

magento가 정상적으로 전달 하는 엉터리 "오류가 발생했습니다" 페이지 아닌 실제 오류 가 발생하려고 합니다. http://www.fontis.com.au/blog/magento/custom-magento-error-page

이 이미지에 대한 fontis.com 에 감사드립니다 .

페이지에 언급 된 보고서는 var/reports/<the_number>

개발 모드를 활성화하면 magento에서 실제 오류가 발생합니다. 이러한 오류는 특히 데이터베이스의 자격 증명과 같은 자격 증명을 유출시킬 수 있습니다! 따라서 프로덕션 서버에서 켜기 전에 생각하십시오!

열려있는 index.php젠토의 루트 폴더에 파일은, 버전에 따라, 당신은 라인 73의 주위에이 라인을 찾을 수 :

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
    Mage::setIsDeveloperMode(true);
}

#ini_set('display_errors', 1);

이제 모드를 활성화하려면이 줄을 변경해야합니다.

IP 주소를 알고 있다면 (대부분의 사람들은 적어도 독일에서는 24 시간마다 새로운 주소를 얻습니다) Google에서 다음을 도와줍니다.

귀하의 공개 IP 주소는 87.138.100.68입니다

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) 
    || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress'
) {
    Mage::setIsDeveloperMode(true);
    ini_set('display_errors', 1);
}

어떤 이유로 든 IP를 모르는 경우 모든 사람에게 오류를 표시 할 수 있습니다.

#if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
#}
ini_set('display_errors', 1);

벌채 반출

마 젠토는 많은 것을 두 파일로 기록합니다.

  • var/log/exception.log
  • var/log/system.log

예외는 항상 기록됩니다. 백엔드에서 시스템 로그를 활성화해야합니다.

System > Configuration > Developer > Log

여기에 이미지 설명을 입력하십시오

예로 설정 Enabled하면 더 많은 오류 및 디버그 메시지가 표시 system.log됩니다exception.log

테마 문제입니까?

당신은 당신의 자신의 테마를 가지고, 이것은 백엔드에 구성되어 있습니다 :

시스템> 구성> 디자인

여기에 이미지 설명을 입력하십시오

이미지를위한 kb.magenting.com 에 감사합니다

여기서 패키지와 테마를 구성 할 수 있습니다. 기본 테마에서 오류를 재현하려면 입력 필드에서 모든 것을 제거하십시오. 그런 다음 저장을 클릭하면 데모 상점에서와 같이 표준 magento 테마가 표시됩니다. 1.8 이전에 상점이 있으면 Magento Community Edition 사용자 안내서 에서 스크린 샷을 찾을 수 있습니다

기본 테마에서 문제를 재현 할 수 없으면 테마가 손상된 경우 테마 공급 업체에 문의하십시오. 우리는 타사 테마, 특히 상용 테마를 지원하지 않습니다.

지금 무엇?

당신은 실제 오류를 발견했습니다. 재현 할 수 있습니다. 기본 테마로 재현 할 수 있습니까? 질문을여십시오. 최선을 다해 도와 드리겠습니다.

질문에서 :

  • 무엇을하고 있는지 설명하십시오
  • 어떤 오류가 발생합니까
  • 로그 파일에 무엇이 있습니까?
  • 아마도 오류의 스크린 샷

5
  1. 우선 개발자 모드를 활성화해야합니다
  2. index.php : ini_set ( 'display_errors', 1);에 오류를 표시 할 수도 있습니다.
  3. 모든 스마트 IDE (PhpStrom / eclipse)로 xDebug 확장 컴파일
  4. 맞춤 및 타사 모듈 비활성화
  5. 예외 및 오류 로그를 검토하고 예외 로그에서 나열된 오류를 해결하십시오.
  6. curl 및 mcrypt 확장이 서버에로드되어 있는지 확인
  7. 폴더 및 파일 권한을 확인하십시오. chown -R sonassi : apache / home / path / public_html / find / home / path / public_html / -type d -exec chmod 775 {} \; / home / path / public_html / 찾기 -exec chmod 664 {} \;
  8. 설정되지 않은 경우 미디어 및 var 디렉토리 권한 0777 업데이트
  9. IDE (phpstrom)를 시작한 다음 index.php 10에서 디버거 시작점을 설정하십시오 .F8을 누르고 오류가 발생할 때까지 다음으로 가십시오.

위의 단계를 사용하려면 오류가 발생해야합니다.


1
답변 해 주셔서 감사하지만 이미 답변을 수락 한 질문에 답변하는 대신이 질문에
dh47

3
@ dh47 저에게 Abhishek이 한 일은 옳습니다. 나는 이미 받아 들여진 질문에 대답하는 것이 여전히 중요하고 중요하다는 것을 언급하고 싶습니다. 실제로 우리 사이트 (Magento SE)에는이 중요한 측면이 부족합니다. 베타에서 나오려면 2.5 답변 배급이 필요합니다. 현재 1.6 답변 비율 만 있습니다. 따라서 동일한 질문에 대한 여러 답변을 부탁드립니다. 해당 질문에 대한 답변없이 답변을받지 않고 질문을 남기지 마십시오. 추가 할 추가 포인트가 하나 더 있으면 대답해야합니다.
Rajeev K Tomy

-1

역 추적 디버그

이것은 magento에서 함수 호출을 디버그하기위한 좋은 함수입니다.

include / config.php에이 함수를 추가하거나 새 파일을 생성하고 일반적으로 사용되는 모든 PHP 함수를 넣으십시오.

back_trace 함수 ($ exit = true) {
  $ call_back_methods = '';
  $ call_back_methods. = '';
  $ call_back_methods. = 'SN 함수 이름 줄 번호 파일 이름';

  $ counter = 1;
  foreach (debug_backtrace () as $ index => $ data) {
    // (0 == $ index) 인 경우 계속;

    $ call_back_methods. = ''. $ counter ++. '';
    $ call_back_methods. = ''. $ data [ 'function']입니다. '';
    $ call_back_methods. = ''. $ data [ 'line']. '';
    $ call_back_methods. = ''. $ data [ 'file']. '';
  }

  $ call_back_methods. = '';

  $ call_back_methods 인쇄;

  if (true == $ exit) 종료;
}

OutPut은

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.