Joe*_*nsn 11 php segmentation-fault
我发现了一种制作php segfault的方法,我对发生的事情有点好奇.也许有人可以帮我解释一下?
joern@xps:..com/trunk5/tools/nestedset> cat > while.php
<?php
while(1){
die('dd');
}
?>
^C
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
ddzsh: segmentation fault php -f while.php
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
dd%
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
dd%
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
ddzsh: segmentation fault php -f while.php
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
ddzsh: segmentation fault php -f while.php
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
dd%
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
dd%
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,每次都不会发生这种情况.Php缓存?
php5 5.2.10.dfsg.1-2ubuntu6.1
Run Code Online (Sandbox Code Playgroud)
一些研究表明,某些 PHP 扩展可能无法很好地发挥作用,或者彼此之间可能无法很好地发挥作用。它还可能取决于服务器或服务器配置。
如果您同时使用 XDebug 和 Zend Debugger,则可能会导致此问题。
起初我认为与 die() 语句一起使用的 while 循环可能是原因的一部分。我很想知道这是否也会导致分段错误:
while (!$fault) {
$fault=check_fault_function();
}
if ($fault) { die('dd'); }
Run Code Online (Sandbox Code Playgroud)
如果不是,这可能就是您使用 while 和 die 的方式。如您所知, while(1) {} 是一个无限循环...(您的服务器可能不知道如何为无限例程分配内存),因此除非您试图导致崩溃,否则这通常是不好的做法。