本地和远程服务器之间的差异

时间:2016-01-09 13:27:07

标签: php ovh

我正在使用Lumen framework开发一个网站。

所有内容都经过配置并在本地完美运行。但是,远程服务器上的情况并非如此。

示例:

  • 当我从数据库中恢复数据时,即使该列仅包含整数,本地的结果也是integer,但在远程:string。我必须在整数值之前指定(int)以确保它们是整数。

  • 在本地,我的所有类都属于命名空间。一切都在本地和远程工作,有时我发现自己Class 'blabla\blibli' not found

在本地,我使用Xampp(PHP版本5.6.14,MySQL版本5.0.11-dev)并删除,我在共享服务器OVH(PHP版本5.6.15,MySQL版本5.1.73)。

你有没有遇到过这种情况?有没有办法来解决这个问题?可能是要写的配置文件吗?

编辑:鉴于以下评论,似乎我的问题的答案实际上取决于操作系统的使用

在本地,我正在使用Windows机器,而在远程,它是运行Linux的机器。对于某些规则,Windows似乎不那么麻烦,例如区分大小写。

1 个答案:

答案 0 :(得分:3)

  

当我从数据库中恢复数据时,即使该列包含   只有整数,local中的结果是整数,但是在remote:string中。   我必须在整数值之前指定(int)以确保它们是   整数。

这是因为PHP不知道如何解释查询结果。没有关于如何解释列值的信息。要修复它并在PHP中具有正确的类型表示,您必须安装MySQL本机驱动程序(mysqlnd)。

Here's a link to documentation page that explains how to do it

  

在本地,我的所有类都属于命名空间。一切都在当地工作   在遥远的地方,有时候我会发现自己没有班级'blabla \ blibli'   结果

根据评论,您似乎正在开发一个操作系统并在另一个操作系统上部署。由于Windows实际上比Linux更加强大(这不是我是Linux的粉丝,这是一个简单的事实),当涉及到区分大小写时,它们往往会原谅很多

Windows对此类事情的宽容并不意味着它们更好或者Windows的麻烦更少(来自系统管理员POV,Windows是一场噩梦)。它只是意味着你不能懒惰并希望操作系统原谅所有内容并猜测你的代码是如何工作的。

  • 保持一致
  • 设置您的开发环境以匹配您的部署环境。您可以使用虚拟机。如果您更喜欢在Windows下进行开发,则可以使用Oracle Virtualbox运行Linux操作系统,设置Samba,在Windows中可以映射Linux驱动器。这使您可以在Windows下运行IDE,并将所有代码保存到Linux框中。您的Web服务器和PHP应该在Linux下运行,您可以通过在Windows下运行的浏览器访问它
  • 设置测试。在部署之前运行它们。这将告诉您是否可能遗漏或遗漏了某些内容
  • 保持一致
祝你好运。