php - 如何调试、测试php?如何在删除 .html (.htaccess) 的情况下测试 html?
问题描述
我想知道专业的 Web 开发人员如何调试、测试和部署一些特定问题的网站。
#1 PHP
对于像 amazon.com 这样的大网站,我想他们不会上传到服务器来测试 php 代码。那么他们是怎么做到的呢?
是否有可以用来在本地测试 php 的软件或 IDE?
#2 没有 .html .php 扩展名的调试?
此外,大多数网站在 url 中删除 .html 和 .php 我也是通过编辑 .htaccess 来做到这一点的
# remove .html .php
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
但是当我这样做时,我需要在不添加扩展名的情况下引用其他 html 和 php 文件
<a href="about">About</a>
<a href="contact">Contact</a>
所以我不能在本地调试,因为没有上传链接就不能工作
如何使用这个特定的 .htaccess 在本地调试?
其他网站是如何做到的?
任何有关网站调试、部署和测试的提示或一般做法将不胜感激。
解决方案
快速解决方案:XAMPP
首先,您的问题非常广泛,尤其是在最后。这些是不可能正确回答的。我将解决你提出的两个明确的问题。要获得广泛而深入的知识,您需要阅读您感兴趣的内容。
对于 PHP,您可以在本地运行 Web 服务器和 PHP 解释器,即在您的开发计算机上。像往常一样,有很多方法可以解决这个问题。一个非常简单的方法是安装XAMPP。
然后,您将使用网络浏览器,而不是实际域转到本地主机地址,即由您自己的计算机提供的地址。
这也将允许您使用相同的设置,例如您列出的 URL 重写规则,因为您当前使用的 Apache Web 服务器是A
XAMPP 中的。
环境相似度
您可能已经感觉到的一般主题是拥有一个独立的开发环境,它应该尽可能类似于生产环境。相似性包括整个软件堆栈(操作系统、库、Web 服务器、外部软件),包括它们的确切版本,也可能扩展到硬件。相似性很好,因为它为您提供了可预测性。东西仍然会出错,但不是因为不同的 PHP 版本。
这可能意味着有单独的服务器(虚拟或非虚拟)专用于开发过程。
对于 XAMPP,您的个人计算机将充当开发服务器。至于相似性,可能很难将您的本地开发环境与服务器完全匹配。
同一服务器上的单独开发实例
在您的情况下,另一个简单的策略是在用于生产的同一台服务器上运行项目的副本。不要告诉任何人有关开发副本的信息,并添加 basic-auth 以保护目录。然后使用它来开发和测试,而不必担心破坏生产实例。
这将保证完全相同的软件和硬件条件,但缺点是不是本地开发服务器。而且,如果您需要进行更大的更改,它们也会影响 prod 实例。
开发虚拟机
如果您觉得有点冒险,您可以启动一个虚拟机,在您选择的操作系统上提供一个 Web 服务器,并且再次类似于您的生产服务器(通常是 Linux)。这是一个本地解决方案,但您可以更好地控制软件堆栈,并且不能中断生产。
这种自由伴随着大量工作使事情顺利进行。你将学会一船。
我还觉得有必要提到还有许多其他编程语言和框架可以使网站成为服务器端。Java、Python、.NET、JavaScript 仅举几例。
推荐阅读
- php - 如何跨子域使用公共标头
- python - 你能解释一下这个元组(2,0,1)是如何转置的吗,我找不到这个转置的逻辑
- asp.net-mvc - 如何使用 asp.net core 3.1 mvc 在 aspnetusers 表中创建自定义列?
- flutter - 有没有办法在 Flutter 中播放视频之前开始缓冲视频?
- python - 从 CSV 将值读入 python,创建新值,如何将其添加到新行?
- javascript - iframe 中的文本可以复制到剪贴板吗?
- teradata - How to merge records based on consective fields in Teradata
- python - plt.show() 不打印 plt.plot 仅 plt.scatter
- ios - 具有背景的 ScrollView 会中断导航标题
- micronaut - 当在 micronaut 中过滤并订阅结果时,只允许一个订阅者错误