0

我将一个运行 ob ubuntu 10.10 服务器的 PHP 网站迁移到另一个 unbutu 12.04 服务器。现在有些 php 函数已被弃用,有些函数找不到他们正在寻找的正确“路径”。旧服务器运行 php 5.3.3,新服务器运行 php 5.3.10(所以没有太大区别)

一些链接是这样写的:

"../modules/xxx.php"

我只是将名称更改为完整路径,它正在工作。

由于该网站完全在旧服务器上运行,因此配置应该“正常”。你们认为除了 php 版本之外还有其他原因导致此错误吗?我考虑在新服务器上将 php 降级到 5.3.3 进行测试....但我不会这样做,当可能有其他原因时。

一些错误示例:

 Deprecated: Function split() is deprecated in /data/
 Warning: include(modules/mdl_users/settings.conf.php): failed to open stream: No such file or directory in /data/xxx/www/classes/module.class.php on line 35

当路径的一部分由这样的函数写入时,他无法打开文件

include($this->registry->admin_path."modules/".$this->name."/settings.conf.php"

所以很明显php中的配置已经以某种方式改变了。由于该网站不是我的,我不想手动更改 100 条路径。你认为降级会“修复”这个问题吗?

提前致谢

4

2 回答 2

1

在我看来,php.ini 文件只是在新服务器上选择了不同的选项。例如,您可以在 php.ini 的错误部分中隐藏已弃用的警告。

如果这些警告设置为在您的旧服务器上隐藏,并设置为在您的新服务器上显示,那么这就是您突然看到它们的原因。

我倍加倍的对 PHP 的小版本升级会是个问题。毕竟还是5.3。PHP 配置几乎可以肯定是问题的原因。

如果您有访问权限,最好的办法是对新旧 php.ini 文件进行文件比较。

或者,如果需要,您可以在运行时在代码中设置大多数 php.ini 选项。

于 2013-08-19T13:07:14.353 回答
1

从 PHP 5.3.0 起, split()函数已被弃用。强烈建议不要依赖此功能。

preg_split()是此函数的建议替代方法。如果您不需要正则表达式的强大功能,则使用explode() 会更快。

于 2013-08-19T13:28:34.053 回答