【发布时间】:2012-03-12 23:36:30
【问题描述】:
我有一个在 Windows 和 Mac 上都能完美运行的应用程序,它使用 PHP5 Reflection API。
我试图将应用程序部署到 Linux 机器(运行 PHP 5.3.6 的 CentOS 机器 - 生产服务器),却发现 ReflectionMethod::getDocComment() 函数没有返回任何内容。我调查了一会儿,发现行尾是潜在的罪魁祸首。
我使用服务器上的dos2unix 实用程序将行尾全部更改为 Unix 样式,并且脚本可以正常工作。现在是奇怪的部分:它只工作一次。我的意思是,从ReflectionMethod::getDocComment() 返回数据的脚本运行一次,然后(不对磁盘上的文件或代码进行任何修改)它恢复为不工作。
任何帮助或建议将不胜感激。
【问题讨论】:
-
可以发一下脚本吗?
-
脚本没有什么奇怪或有趣的地方。它在使用相似环境的两台机器上完美运行:这绝对是
ReflectionMethod::getDocComment()可能没有考虑到的行尾问题。无论如何,这里是脚本:github.com/dannykopping/PHPDocBlock-lite/blob/master/lib/… 它是解析 doc-block cmets 的开源项目的一部分 :) -
对于它的价值,朋友建议我研究一下服务器的缓存元素;事实证明,eAccelerator 已启用。我禁用它,重新启动服务器,现在一切正常!这个问题可能与缓存有关吗?在这种情况下,除了禁用 eAccelerator 之外,解决此问题的最佳方法是什么?
标签: php reflection line-endings