如何在端口而不是在htdocs文件夹中运行PHP应用程序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在端口而不是在htdocs文件夹中运行PHP应用程序?相关的知识,希望对你有一定的参考价值。
当我们运行nodejs应用程序时,它会绑定到我们可以访问它的机器上的端口。有没有类似的方式来运行php应用程序,而不是只是通过xampp htdocs文件夹进入默认位置?
我想避免将我的文件存储在htdocs文件夹中。
你在混淆几个不同的问题。
PHP传统上是通过CGI或FastCGI(PHP-FPM)守护进程执行的。在这些情况下,Web服务器本身(如nginx或Apache)是侦听端口的,它通过这些协议与PHP通信。服务HTTP请求的大多数Node.js应用程序跳过CGI和FastCGI路由并自己运行HTTP守护程序。在前面仍然有一个合适的Web服务器,以处理缓慢客户端和缓存的缓冲是很常见的。
考虑这一点的方法是,对于大多数(当然不是全部)Node.js应用程序,使用HTTP而不是FastCGI。 (并且,作为奖励,如果您想让客户端直接连接到Node.js,您可以完全省略对Web服务器的需求。)
现在,转到应用程序目录结构...最佳实践是将应用程序代码实际保留在文档根目录之外。一个真正简单的方法是使用单个文件,例如index.php
,它接收所有路由(通过Web服务器中的重写规则配置),然后加载并执行相应的代码。在磁盘上,此应用程序代码的其余部分位于文档根目录之外,可以通过简单的require()
/ include()
加载。
从PHP 5.4.0开始,您可以使用PHP Built-in web server启动自己的服务器
从PHP 5.4.0开始,CLI SAPI提供了一个内置的Web服务器。
Web服务器只运行一个单线程进程,因此如果请求被阻止,PHP应用程序将停止运行。
示例: - 只运行一个单线程进程 - 意味着如果你尝试cURL或file_get_contents,或者在同一个域上做任何请求,你最终会陷入循环并卡住服务器,因为PHP是同步的,而且这个是单一的 - 螺纹。
从文档提供的示例
router.php
<?php
// router.php
if (preg_match('/.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false; // serve the requested resource as-is.
} else {
echo "<p>Welcome to PHP</p>";
}
?>
然后在你的终端类型php -S localhost:8000 router.php
启动服务器。
我想避免将我的文件存储在htdocs文件夹中。
要指定另一个文档根,请添加-t
参数:
php -S localhost:8000 -t /path/to/project router.php
我刚才写了一个nodejs包node-php-awesome-server,旨在做到这一点,你可以启动一个nodejs webserver,渲染php,设置php环境变量,改变ini设置......今天仍然使用这个捆绑webpack中间件进行服务器端渲染。
如果你现在只对php感兴趣,试试他们的内置服务器,如果默认路由器不能覆盖你需要的东西,我已经编写了一个路由器来处理几个框架PHP-Built-in-web-server-Router
以上是关于如何在端口而不是在htdocs文件夹中运行PHP应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的计算机上运行 htdocs 目录之外的 PHP 文件?