本地服务器和远程服务器的区别
Differences between local and remote servers
我正在用 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 似乎不那么麻烦某些规则,例如区分大小写。
When I recover a data from my database, even if the column contains
only integers, the result in local is integer, but in remote : string.
I have to specify (int) before the integer values to be sure they are
integer.
发生这种情况是因为 PHP 不知道如何解释查询结果。没有关于如何解释列值的信息。要解决此问题并在 PHP 中具有正确的类型表示,您必须安装 MySQL 本机驱动程序 (mysqlnd
)。
Here's a link to documentation page that explains how to do it.
Locally, all my classes belong to namespaces. Everything works locally
and in remote, sometimes I find myself with Class 'blabla\blibli' not
found
根据评论,您似乎在一个 OS 上开发并在另一个 OS 上部署。因为 Windows 实际上 比 Linux 更糟糕 (这不是我是 Linux 的粉丝,这是一个简单的事实),在区分大小写和不区分大小写方面,他们往往会原谅很多。
Windows 对这些事情宽容并不意味着它们更好或者 Windows 的麻烦更少(来自系统管理员 POV,Windows 是一场噩梦) .这只是意味着您不能偷懒并期望 OS 原谅所有事情并猜测您希望代码如何工作。
- 保持一致
- 设置您的开发环境以匹配您的部署环境。您可以为此使用虚拟机。如果你更喜欢在 Windows 下开发,你可以使用 Oracle Virtualbox 来 运行 一个 Linux OS,设置 Samba 并且在 Windows 你可以映射一个 Linux 开车。这让你 运行 你的 IDE 在 Windows 下,所有代码都保存到 Linux 框。您的网络服务器和 php 应该 运行 在 Linux 下,您可以通过 运行 在 Windows
下的浏览器访问它
- 设置测试。 运行 在部署之前。这将告诉您是否可能遗漏或遗漏了某些内容
- 保持一致
祝你好运。
我正在用 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 似乎不那么麻烦某些规则,例如区分大小写。
When I recover a data from my database, even if the column contains only integers, the result in local is integer, but in remote : string. I have to specify (int) before the integer values to be sure they are integer.
发生这种情况是因为 PHP 不知道如何解释查询结果。没有关于如何解释列值的信息。要解决此问题并在 PHP 中具有正确的类型表示,您必须安装 MySQL 本机驱动程序 (mysqlnd
)。
Here's a link to documentation page that explains how to do it.
Locally, all my classes belong to namespaces. Everything works locally and in remote, sometimes I find myself with Class 'blabla\blibli' not found
根据评论,您似乎在一个 OS 上开发并在另一个 OS 上部署。因为 Windows 实际上 比 Linux 更糟糕 (这不是我是 Linux 的粉丝,这是一个简单的事实),在区分大小写和不区分大小写方面,他们往往会原谅很多。
Windows 对这些事情宽容并不意味着它们更好或者 Windows 的麻烦更少(来自系统管理员 POV,Windows 是一场噩梦) .这只是意味着您不能偷懒并期望 OS 原谅所有事情并猜测您希望代码如何工作。
- 保持一致
- 设置您的开发环境以匹配您的部署环境。您可以为此使用虚拟机。如果你更喜欢在 Windows 下开发,你可以使用 Oracle Virtualbox 来 运行 一个 Linux OS,设置 Samba 并且在 Windows 你可以映射一个 Linux 开车。这让你 运行 你的 IDE 在 Windows 下,所有代码都保存到 Linux 框。您的网络服务器和 php 应该 运行 在 Linux 下,您可以通过 运行 在 Windows 下的浏览器访问它
- 设置测试。 运行 在部署之前。这将告诉您是否可能遗漏或遗漏了某些内容
- 保持一致
祝你好运。