【问题标题】:Differences between local and remote servers本地服务器和远程服务器的区别
【发布时间】:2016-01-09 13:27:07
【问题描述】:

我正在使用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)上。

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

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

在本地,我在一台 Windows 机器上工作,而在远程,它是一台运行 Linux 的机器。 Windows 在某些规则(例如区分大小写)方面似乎没有那么麻烦。

【问题讨论】:

  • 这可能是一个愚蠢的问题,但是您的包含路径在 PHP 中设置正确,并且您的表结构在 MySQL 中完全相同,对吧?
  • @mikealeonetti 本地和远程的一切都一样,包括 sql 表
  • 我认为windows os在不区分大小写的情况下处理路径,以及其他,是区分大小写的问题,但我可能是错的。无论如何,我认为有一个统一的命名约定是很好的做法。
  • @Andrew 你说得对,我不记得 WIndows 不区分大小写。就像 OVH 在 Linux 上运行一样,它确实如此。很好。谢谢
  • @Zl3n 我相信您的第一个问题也是由 Windows/Linux 差异引起的。通常,数据库驱动程序负责处理查询结果中值的数据类型。

标签: php ovh


【解决方案1】:

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

发生这种情况是因为 PHP 不知道如何解释查询结果。没有关于如何解释列值的信息。要解决这个问题并在 PHP 中使用正确的类型表示,您必须安装 MySQL Native Driver (mysqlnd)。

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

在本地,我所有的类都属于命名空间。一切都在本地工作 在远程,有时我发现自己与 Class 'blabla\blibli' 没有 找到了

根据 cmets,您似乎是在一个操作系统上开发并在另一个操作系统上部署。由于 Windows 实际上比 Linux 差很多(这不是我作为 Linux 的粉丝,这是一个简单的事实),所以在区分大小写和不区分大小写时,他们往往会原谅很多.

Windows 对这些事情宽容并不意味着它们更好,或者 Windows 的麻烦更少(从系统管理员 POV 来看,Windows 是一场噩梦)。这只是意味着您不能懒惰并期望操作系统会原谅一切并猜测您希望代码如何工作。

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

祝你好运。

【讨论】:

  • 显然,mysqlnd 没有也不会在 OVH 中内置。为什么 ?好问题。但是,我注意到(通过创建phpinfo()),此选项已集成到我的开发环境中。使用 Laravel (lumen) 框架,我有机会在 Linux 上使用宅基地,但我更喜欢在 windows 下开发。我有很多年的习惯和工具。但事实上,我现在更好地理解了为什么我的本地环境和远程环境之间存在如此多的差异。一个简单的操作系统问题。感谢您非常清楚的解释
  • 完全了解您的感受。我多年来一直在 Windows 下工作,并且慢慢地过渡到 Linux。现在我使用这两种操作系统,仅仅是因为一个人不能不知道 IT 世界正在发生什么。幸运的是,我同时使用它们(我运行我的 IDE @ windows,但其余的都在 Linux VM 下)。你能对自己做的最糟糕的事情就是像我朋友所说的那样拥有一个“石头大脑”。扩展您的知识和视野,尝试这些新事物,相信我——您的开发生活会变得更轻松。你至少会知道别人使用的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多