2010-02-20 5 views

답변

1

PHP에서 액세스 할 수있는 대부분의 (모두?) PHP 소스 코드의 ext/디렉토리에 정의되어 있습니다. 재귀 검색 도구를 사용하는 경우 PHP_FUNCTION을 검색하십시오. 검색 결과를 텍스트 파일에 저장하면 PHP 내장 함수가 정의 된 위치를 파악하는 데 "색인"이 될 것입니다.

정말 중요한 내용은 ext/standard입니다.

일부 희귀 "함수"는 PHP가 컴파일하는 Zend 가상 머신에서 직접 opcode로 구현되므로 잘 정의 된 C 함수가 없습니다. 나는 strlen이 그런 함수라고 생각한다.

+0

확장 기능에 ext/for 함수가 없습니까? 'get_class'와 같이 확장자가 필요없는 함수는 어떻게 될까요? – user198729

+0

대다수의 내용은 핵심 언어의 일부로 간주되는 것조차도 "확장"에 있습니다. 저는 get_class가 opcode로 컴파일되는 함수 중 하나라고 확신합니다. vld (http://derickrethans.nl/projects.html#vld)를 사용하여 특정 PHP 스크립트가 컴파일되는 opcode를 볼 수 있습니다. 이러한 opcode 뒤에있는 실제 코드는 Zend/zend_vm_def.h에서 찾을 수 있습니다. 편집하는 경우 해당 파일 맨 위에있는 주석을 반드시 읽으십시오. 추가 빌드 단계가 필요합니다. – andrewffff

-1

나는 당신이 this을 봐야한다고 생각한다.
Facebook은 PHP 코드를 C++로 변환하는 도구를 개발했습니다.
그래서 나는 어느 정도까지 C를 처리 할 수 ​​있다고 생각합니다.

+0

왜 downvote? 나는 그 질문을 잘못 해석 했는가? –

0

실행 된 C 코드의 디버깅에 대해 dbg과 같은 것을 사용할 수 있다고 가정합니다. PHP를 --enable-debug 모드로 다시 컴파일해야합니다. 내가 디버그 PHP 자체에이 사용한 적이


,하지만 난 사용했습니다 :

는 더 많은 정보를 위해, 당신은 좀 걸릴 수 있습니다 이 두 페이지는 내가 확장 기능을 가지고 있었던 충돌의 백 트레이 트를 생성하고, 내가 기억하는 것에서부터 정상적으로 작동했다. (!) 참고로


: --enable-debug로 컴파일 된 PHP를 사용하여, 당신은 그들이 로드하는 방식을 사용하고있는 확장 기능의 일부를 다시 컴파일하고 변경해야 할 수도 있습니다은 (이것은 예를 들어, Xdebug는의 경우입니다) ; 다른 일부는 더 이상 작동하지 않을 수도 있습니다.

+0

PHP를 더 쉽게 파고 드는 더 쉽고 안전한 방법이 있습니까? – user198729

+0

여기서 "안전하지 않은"것을 보지 못했습니다 : 디버깅/개발을 원하면 분명히하고있는 일을 알고 있으며, --enable-debug를 사용하여 PHP를 빌드하면 무엇에 대한 정보를 얻을 수 있습니까? 무언가가 잘못 될 때. ;;; 쉬운 부분에 대해서는 확실하지 않습니다. 나는 소스 코드를 통해가는 것이 최선의 해결책이라고 말하고 싶지만, "쉽지"않을 것이다. 큰 코드베이스를 발견하는 것은 결코 쉬운 일이 아니다 ... –

+0

나는 의미한다. "더 이상 전혀 효과가 없을 수도있는 다른 사람들이있을 수 있습니다."더 안전 할 수는 없습니다. – user198729

관련 문제