本地机器上的PHP服务器?


161

我正在尝试构建一个PHP网站,并且想要测试我的PHP文件而不将其上传到主机。在上载它们之前,基本上在我自己的机器上对其进行测试。我怎么做?


1
使用XAMPP并安装PHP服务器。有时,如果Skype使用端口80和443,则Apache服务器将无法启动。这里提供了完整的解决方案feelzdroid.com/2015/12/install-php-server-local-machine.html
火影忍者

Answers:



380

这些天,PHP 5.4和更高版本具有内置的Web服务器

您只需从终端运行命令:

cd path/to/your/app
php -S 127.0.0.1:8000

然后,在浏览器中进入http://127.0.0.1:8000繁荣状态,您的系统应该已启动并正在运行。(必须有一个index.php或index.html文件才能使它起作用。)

您还可以添加一个简单的路由器

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    require_once('resolver.php');
}
?>

然后运行命令

php -S 127.0.0.1:8000 router.php

参考文献:


9
如果有人想知道,可以在下面的链接中找到-S和对其他命令的引用。特别地,-S表示“使用内置的Web服务器运行”。php.net/manual/en/features.commandline.options.php
calipoop

但是应该在哪里存储数据库呢?
Yousef Altaf

1
OP的@YousefAltaf未指定天气,或者他们不希望使用数据库。他们要求一个PHP服务器,而这仅仅是一个PHP服务器。如果要运行MYSQL Server或PostGres Server,那将是另一个问题,您可以配置PHP应用程序以使用所述服务器。为了快速开发,SQLITE DB也应该这样做。
GardenRouteGold

1
PHP内置Web服务器不支持并行请求:The web server runs a only one single-threaded process, so PHP applications will stall if a request is blocked.。这可能会导致一些性能问题。
vikyd18年

1
@vikyd这并不意味着不进行全面的应用程序开发,它只是测试/调试功能或编写恕我直言的快速方法。
GardenRouteGold

39

这是一种在本地运行php服务器的简单,可靠的方法:

php -S 0.0.0.0:<PORT_NUMBER>

其中PORT_NUMBER是1024到49151之间的整数

例: php -S 0.0.0.0:8000

笔记:

  1. 如果您使用localhost而不是0.0.0.0,则可能会遇到连接被拒绝的错误。

  2. 如果要使Web服务器可访问任何界面,请使用0.0.0.0

  3. 如果URI请求未指定文件,则返回给定目录中的index.php或index.html。

给定以下文件(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 0.0.0.0:8000 router.php

...,然后在浏览器中导航到http:// localhost:8000 /,将显示以下内容:

Welcome to PHP

参考:

内置网络服务器


4
感谢您提供有关0.0.0.0的提示,这是一个神奇的解决方案-应将其纳入公认的答案之内或其他...
calipoop

14

我经常使用以下命令来旋转我的PHP Laravel框架:

$ php artisan serve --port=8080
or
$ php -S localhost:8080 -t public/

在上面的命令: - 工匠是包含在Laravel命令行界面,使用服务调用内置的PHP服务器

与内置的Web服务器一起运行。

 php -S <addr>:<port> -T

这里,
-S:切换为使用内置Web服务器运行。
-T:切换为内置Web服务器指定文档根目录。



7

如果您想要一个适用于任何操作系统的通用本地开发堆栈,可以在其中选择不同的PHP,MySQL和Web服务器版本,并且又不害怕使用Docker,则可以使用devilbox

devilbox是一个现代且高度可定制的dockerized PHP堆栈,支持完整的LAMP和MEAN并在所有主要平台上运行。主要目标是轻松切换和组合本地开发所需的任何版本。它支持无限数量的为其自动创建虚拟主机和DNS记录的项目。电子邮件通用和流行的开发工具也将为您服务。无需进行配置,因为一切都已通过大规模虚拟主机进行了预先设置。

使其启动并运行非常简单:

# Get the devilbox
$ git clone https://github.com/cytopia/devilbox
$ cd devilbox

# Create docker-compose environment file
$ cp env-example .env

# Edit your configuration
$ vim .env

# Start all containers
$ docker-compose up

魔盒

链接:






1

如果您的本地计算机上安装了正确的软件:支持PHP的Web服务器,那么就没有理由不能像您描述的那样做。

目前,我正在使用Windows XP计算机上的XAMPP,以及(在家中)使用Kubuntu和LAMP堆栈进行此操作。



1

AppServ是Windows中要运行的小程序:

  • 阿帕奇
  • 的PHP
  • 的MySQL
  • phpMyAdmin

它还将为您提供Apache的启动和停止按钮。我觉得这很有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.