我的开发服务器在PHP 5.3.8上顺利运行我的PHP Web应用程序。
但是,当我将PHP 生产服务器从PHP 5.2.6升级到5.3.8时,我遇到了这个应用程序的几个问题(关于已弃用的函数ereg_replace
和丢失{{1}的投诉} settings)迫使我命令回滚到5.2.6。
相同的PHP代码如何在一个5.3.8服务器上正常工作而不在另一个服务器上工作?这种行为的常见原因是什么?有什么建议吗?
答案 0 :(得分:3)
您的计算机上的错误级别设置不同。
供参考:
不推荐使用ereg_replace,强烈建议不要使用它
每次调用日期/时间函数都会生成一个E_NOTICE timezone无效,和/或E_WARNING消息(如果使用系统) 设置或TZ环境变量
答案 1 :(得分:2)
请在两台服务器上访问php.ini(PHP配置文件)。 找到“; display_errors”行
请在此之后比较以下几行。
这些是可用于三个设置变量的选项:
; display_errors
; Default Value: On
; Development Value: On
; Production Value: Off
; display_startup_errors
; Default Value: Off
; Development Value: On
; Production Value: Off
; error_reporting
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
答案 2 :(得分:1)
PHP是一种不断发展的语言,对于Java或c#也是如此,因此,如果某些函数不被弃用,则必须检查文档并相应地更新代码。
此外,您还必须确保两台服务器上的PHP设置相同。
如果您查看ereg_replace
文档,则会出现这种模糊:
警告此功能自PHP 5.3.0起已废弃。依靠 这个功能非常气馁。
答案 3 :(得分:1)
您是否完全肯定您的开发服务器运行PHP 5.3.8?
PHP 5.3.X中不推荐使用所有ereg_*
函数,因此您的代码不应在没有任何警告的情况下在PHP 5.3上运行。如果是这样,那很奇怪,因为您的开发服务器应该生成比生产服务器更多的警告(例如E_ALL
)。检查php.ini
中的错误报告设置。 (display_errors
,error_reporting
)
要实现它,您应该真正搜索ereg_*
的任何出现,并用preg_*
等效项替换这些表达式。
date.timezone可以在php.ini
中设置。在那之后,我看到你的PHP 5.2.6代码不应该在5.3.6上运行的原因。