XAMPP安装(Apache,MySQL,PHP,Perl)每次都通过PHP调用DOTNET对象时崩溃。例如php.net上的示例代码
<?php
$stack = new DOTNET("mscorlib", "System.Collections.Stack");
$stack->Push(".Net");
$stack->Push("Hello ");
echo $stack->Pop() . $stack->Pop();
//$stack = NULL; tried this, with no luck
?>
这将首次显示Hello .Net
,但如果我刷新页面,Apache会崩溃并立即重新启动。如果我再次刷新,我会看到Hello .Net
。如果我再次刷新,你猜对了; Apache崩溃了....任何想法?也许我应该以某种方式释放这个对象?
由于
Apache日志:
[Wed Feb 29 00:59:44 2012] [notice] Apache/2.2.21 (Win32) SVN/1.6.6 DAV/2 mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations [Wed Feb 29 00:59:44 2012] [notice] Server built: Sep 10 2011 11:34:11 [Wed Feb 29 00:59:44 2012] [notice] Parent: Created child process 5156 [Wed Feb 29 00:59:45 2012] [notice] Digest: generating secret for digest authentication ... [Wed Feb 29 00:59:45 2012] [notice] Digest: done [Wed Feb 29 00:59:46 2012] [notice] Child 5156: Child process is running [Wed Feb 29 00:59:46 2012] [notice] Child 5156: Acquired the start mutex. [Wed Feb 29 00:59:46 2012] [notice] Child 5156: Starting 150 worker threads. [Wed Feb 29 00:59:46 2012] [notice] Child 5156: Starting thread to listen on port 443. [Wed Feb 29 00:59:46 2012] [notice] Child 5156: Starting thread to listen on port 443. [Wed Feb 29 00:59:46 2012] [notice] Child 5156: Starting thread to listen on port 80. [Wed Feb 29 00:59:46 2012] [notice] Child 5156: Starting thread to listen on port 80. [Wed Feb 29 00:59:49 2012] [notice] Parent: child process exited with status 3221225477 -- Restarting. [Wed Feb 29 00:59:50 2012] [notice] Digest: generating secret for digest authentication ... [Wed Feb 29 00:59:50 2012] [notice] Digest: done [Wed Feb 29 00:59:51 2012] [notice] Apache/2.2.21 (Win32) SVN/1.6.6 DAV/2 mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations [Wed Feb 29 00:59:51 2012] [notice] Server built: Sep 10 2011 11:34:11 [Wed Feb 29 00:59:51 2012] [notice] Parent: Created child process 5948 [Wed Feb 29 00:59:51 2012] [notice] Digest: generating secret for digest authentication ... [Wed Feb 29 00:59:51 2012] [notice] Digest: done [Wed Feb 29 00:59:52 2012] [notice] Child 5948: Child process is running [Wed Feb 29 00:59:52 2012] [notice] Child 5948: Acquired the start mutex. [Wed Feb 29 00:59:52 2012] [notice] Child 5948: Starting 150 worker threads. [Wed Feb 29 00:59:52 2012] [notice] Child 5948: Starting thread to listen on port 443. [Wed Feb 29 00:59:52 2012] [notice] Child 5948: Starting thread to listen on port 80. [Wed Feb 29 00:59:52 2012] [notice] Child 5948: Starting thread to listen on port 80. [Wed Feb 29 00:59:52 2012] [notice] Child 5948: Starting thread to listen on port 443. [Wed Feb 29 00:59:55 2012] [notice] Parent: child process exited with status 3221225477 -- Restarting. [Wed Feb 29 00:59:55 2012] [notice] Digest: generating secret for digest authentication ... [Wed Feb 29 00:59:55 2012] [notice] Digest: done [Wed Feb 29 00:59:57 2012] [notice] Apache/2.2.21 (Win32) SVN/1.6.6 DAV/2 mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations [Wed Feb 29 00:59:57 2012] [notice] Server built: Sep 10 2011 11:34:11 [Wed Feb 29 00:59:57 2012] [notice] Parent: Created child process 4596 [Wed Feb 29 00:59:58 2012] [notice] Digest: generating secret for digest authentication ... [Wed Feb 29 00:59:58 2012] [notice] Digest: done [Wed Feb 29 00:59:59 2012] [notice] Child 4596: Child process is running [Wed Feb 29 00:59:59 2012] [notice] Child 4596: Acquired the start mutex. [Wed Feb 29 00:59:59 2012] [notice] Child 4596: Starting 150 worker threads. [Wed Feb 29 00:59:59 2012] [notice] Child 4596: Starting thread to listen on port 443. [Wed Feb 29 00:59:59 2012] [notice] Child 4596: Starting thread to listen on port 80. [Wed Feb 29 00:59:59 2012] [notice] Child 4596: Starting thread to listen on port 443. [Wed Feb 29 00:59:59 2012] [notice] Child 4596: Starting thread to listen on port 80.
这显示了一些重新启动。
答案 0 :(得分:1)
文件可能是
$stack = new DOTNET("mscorlib", "System.Collections.Stack");
$stack->Push(".Net");
使用您的命令创建一个文件,而不是直接使用调用
$output = exec("php dotnet.php");
echo $output;