对于导致脚本在MacOSX中爆炸的长PHP变量问题,有什么建议吗?

对于导致脚本在MacOSX中爆炸的长PHP变量问题,有什么建议吗?,php,string,macos,variables,encoding,Php,String,Macos,Variables,Encoding,好的,这是一个奇怪的。我最近转向了运行Lion的Mac OS,并设置了OSX附带的PHP版本。除了一件事,所有的事情都像我期望的那样运行,我不明白为什么 作为CMS的一部分,菜单数据缓存到php文件中,如下所示: $menuData = unserialize( $menuString ); 其中$menuString是序列化数据的长字符串。我在一台运行WAMP的PC和许多linux机器上成功地使用了同样的东西,没有任何问题,但自从我使用Mac OS以来,每次我包含这个文件时,它都会打印一长串

好的,这是一个奇怪的。我最近转向了运行Lion的Mac OS,并设置了OSX附带的PHP版本。除了一件事,所有的事情都像我期望的那样运行,我不明白为什么

作为CMS的一部分,菜单数据缓存到php文件中,如下所示:

$menuData = unserialize( $menuString );
其中$menuString是序列化数据的长字符串。我在一台运行WAMP的PC和许多linux机器上成功地使用了同样的东西,没有任何问题,但自从我使用Mac OS以来,每次我包含这个文件时,它都会打印一长串问号,即使上面的一行在文件中被注释掉了!!。最初,$menuString大约是280k,但我也尝试过使用少于6k的菜单字符串,但没有成功

是否存在可能表现出这种行为的PHP设置?我很困惑,尝试了很多事情

请帮忙


更新:我已经在Mac上一行一行地查看了PHP.ini和我在WAMP中使用的PHP.ini,没有发现任何差异,所以不要期望它直接设置在那里。设置中的所有其他功能都完全按照我的预期工作,所有其他网站功能都正常工作!?在本机设置方面,有什么明显的地方我没有注意到吗?

如果这一行被注释掉了,那么它可能不是那一行。。。尝试dos2unix来修复您的行结尾。。。除了抓取十六进制编辑并在区域内搜索奇怪的非打印字符之外…

好吧,我最后使用了一个解决方法。在创建大的长序列化菜单串时,我将其保存到一个不含php的txt文件中,然后执行了一个

$menuData = unserialize( file_get_contents( [Textfile] ) );

似乎已经解决了这个问题!!我仍然不明白它为什么会发生,但至少它起作用了

可能是文件编码问题?长字符串?可能表示字符集有问题。这是我最初的想法,但我已将其减少到1k以下,并按我的预期工作!此外,我已经检查了php脚本和php.ini文件中的编码,似乎没有注意到我的php.ini在其他地方和mac上的编码有任何差异!谢谢,不幸的是,这没有多大帮助!菜单结构发生更改时,会定期重新生成该文件。我试过寻找不正常的字符,但除了在众多的linux机器和PC机上工作之外,并没有什么不正常的!此外,如果我取出菜单字符串并将文件中的行替换为$menuData=array 1,2,3;它正常工作我想如果你避开它,这是一个没有意义的问题,但我会看看你的php.ini和php信息中的差异,寻找一个行长度或参数长度,等等。Grady,谢谢-我这样做了,认为这可能是问题的根源,但什么也找不到!?如果你能找到一种静态复制它的方法,我很乐意为你工作。