0

我正在开发一个带有Lumen 框架的网站。

一切都在本地配置并完美运行。但是,在远程服务器上并非如此。

例子:

  • 当我从我的数据库中恢复数据时,即使该列仅包含整数,本地的结果是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 似乎不那么麻烦某些规则,例如区分大小写。

4

1 回答 1

3

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

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

这是说明如何操作的文档页面的链接

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

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

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

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

祝你好运。

于 2016-01-09T16:23:58.817 回答