Zend/zend_execute_API.c PHP-5.2.17 の 358 行目
「zend_is_executing(TSRMLS_C)」を実行するのはなぜですか?
get_active_function_name
ソースをチェックアウトすると、エグゼキュータ global にアクセスしようとしていることがわかりますfunction_state_ptr
。
問題は、PHP コードが実際に実行される場合にのみ、このエグゼキュータ グローバルが初期化されることです。たとえば、関数が呼び出されるget_active_function_name
前に拡張機能が呼び出そうとすると、-checkを省略すると、PHP インタープリターがクラッシュする可能性があります。execute
get_active_function_name
zend_is_executing
したがって、このチェックはget_active_function_name
、大きな問題を引き起こす可能性のある初期化されていない値にアクセスすることを防ぎます (これは、「未定義の動作」の別の言い方です)。