我试图建立一个PHP网站,我想测试我的PHP文件,而不是上传到我的主机。基本上是在上传之前先在我自己的机器上测试。我怎么做呢?


当前回答

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

devilbox是一个现代的、高度可定制的dockerized PHP堆栈,支持完整的LAMP和MEAN,可以在所有主要平台上运行。主要目标是轻松切换和组合本地开发所需的任何版本。它支持无限数量的项目,自动为其创建vhosts和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

链接:

Github: https://github.com/cytopia/devilbox 网站:http://devilbox.org

其他回答

AppServ是一个在Windows中运行的小程序:

Apache PHP MySQL phpMyAdmin

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

现在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

引用:

https://www.php.net/manual/en/features.commandline.webserver.php https://www.php.net/manual/en/features.commandline.options.php

如果您正在使用Windows,那么WPN-XM服务器堆栈可能是一个合适的替代方案。

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

devilbox是一个现代的、高度可定制的dockerized PHP堆栈,支持完整的LAMP和MEAN,可以在所有主要平台上运行。主要目标是轻松切换和组合本地开发所需的任何版本。它支持无限数量的项目,自动为其创建vhosts和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

链接:

Github: https://github.com/cytopia/devilbox 网站:http://devilbox.org

您还可以使用代码在PHP中创建自己的服务器!

<?php
set_time_limit(0);

$address = '127.0.0.1';
$port =4444;
$server = '$address + $port';

// <-- Starts Server
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $port) or die('Could not bind to address');
echo "\n Server is running on port $port waiting for connection... \n\n";

while(1)
{
    socket_listen($sock);
    $client = socket_accept($sock);

    $input = socket_read($client, 443);

    $incoming = array();
    $incoming = explode("\r\n", $input);

    $fetchArray = array();
    $fetchArray = explode(" ", $incoming[0]);

    $file = $fetchArray[1];
    if($file == "/"){ 

   

$file = "src/browser.php";//当服务器启动时,这个文件是打开的!

    } else {

        $filearray = array();
        $filearray = explode("/", $file);
        $file = $filearray[1];
    }

echo $fetchArray[0] . " Request " . $file . "\n"; 

// <-- Control Header
$output = "";
$Header = "HTTP/1.1 200 OK \r\n" .
"Date: Fri, 31 Dec 1999 23:59:59 GMT \r\n" .
"Content-Type: text/html \r\n\r\n";

$Content = file_get_contents($file);
$output = $Header . $Content;

    socket_write($client,$output,strlen($output));
    socket_close($client);

}
print('server running..');

运行这段代码,然后打开浏览器到localhost:443或任何您选择的端口