我很难在Cygwin上运行PHP客户端界面。我不断收到Segmentation fault
错误。但是有些功能是正确的 - 我不能说它什么时候发生。
如果有人遇到此错误,请给我任何线索,以便在cygwin下正确运行PHP CLI。
提前感谢!
编辑
我收到堆栈转储,但我不知道它是否说明了什么:
Exception: STATUS_ACCESS_VIOLATION at eip=603B7AC6
eax=0000000A ebx=FFE42FFF ecx=002853E0 edx=FFE43000 esi=00000000 edi=FFE43000
ebp=002853E2 esp=00285240 program=C:'cygwin'bin'php.exe, pid 10056, thread main
cs=0023 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame Function Args
002853E2 603B7AC6 (022A018F, 02D40284, 0348030B, 0374034D)
00040002 00F30055 (00340000, 01E00000, 020C0000, 00360000)
此外,我试图限制 php.ini
pcre.recursion_limit=1000
- 没有效果。
每次使用客户端界面时,它都会崩溃。如果我通过 Apache2 运行它,那就没有问题了。
如何有效地调试它?
编辑
我用php-cgi运行它,在那里我收到带有错误描述的html输出:
ContextErrorException: Warning: Invalid argument supplied for foreach() in ...
有了这些信息,我猜输入参数有问题。如果我从控制台运行没有参数的脚本,则不会收到segmentation fault
.
这是Symfony框架,这些脚本在Windows上运行,在控制台上像ubuntu一样运行。所以我猜: - PHP设置有问题 - 天鹅座上的控制台有问题
知道我怎样才能更好地调试它吗?
经过长时间的无用研究,我最终从Cygwin中删除了php5和php,并在那里映射了独立的WindowsPHP。
对于面临此问题的任何人:
- 卸载cygwin的所有"PHP"扩展组
- 运行西格温
-
rm -f /usr/bin/php.exe
-
rm -rf /usr/share/php
- 下载并安装全新的 PHP for Windows
-
ln -s /cygdrive/c/your/path/to/php/php.exe /usr/bin/php.exe
所以我不知道为什么会出现这个问题,但是用于Windows安装的新本机php有所帮助。