我试图建立一个PHP网站,我想测试我的PHP文件,而不是上传到我的主机。基本上是在上传之前先在我自己的机器上测试。我怎么做呢?
当前回答
如果您正在使用Windows,那么WPN-XM服务器堆栈可能是一个合适的替代方案。
其他回答
即使您的机器上有现有的服务器,也可以使用Docker。通过docker Run从任何终端运行一行代码:
docker run --name=php -d -it -p 80:80 --mount type=bind,source='/absolute/path/to/your/php/web/root/folder/',target=/app webdevops/php-nginx-dev
现在,您将有一个名为php的运行容器在本地主机端口80上为请求提供服务。您应该能够在使用url http://127.0.0.1的任何浏览器中看到您的php脚本
注:
If you don't have Docker installed, instructions for Debian/Ubuntu and Windows 10+ are at the end. It can be installed on Windows 7 but it's quite annoying and not worth it. For windows 7, if you must, I'd just install Uniserver or XAMPP or something like that. You can confirm that the container is live by running docker ps in a terminal on the host machine. In order to keep your app/code modifications after the container is terminated/removed, the web root is bound to the folder where you ran the docker run command. To change it, specify the path to your local folder in the --mount source='[/local/path]' parameter. Note: Because the folder is bound to the container, changes you make in the container will also be made in the host folder. Logs can be viewed using the following command (--follow is optional, ctrl+c to exit): docker logs php --follow The web root folder in the container is /app. This may be helpful if you don't need to save anything and don't feel like specifying a bind mount in the docker run command. The port is specified using the -p [host port]:80 parameters. You may have to explicitly specify -p 80:80 in order to be able to connect to the container from a web browser (at least on Windows 10). To access the container's bash terminal run this from the host machine (type exit to return to host): docker exec -it php /bin/bash You can install packages in the container's bash terminal the same way that you would on a native Debian/Ubuntu box (e.g. apt install -y nano). Composer is already installed (run composer -v from container's terminal to inspect) To launch an additional container, specify a different host port and container name using the --name=[new_name] and -p [host port]:80 parameters. If you need a database or other server, do the same thing with a docker image for MySQL or MariaDB or whatever you need. Just remember to bind the data folder to a host folder so you don't lose it if you accidentally delete your docker image(s). How to install Docker: Debian/Ubuntu as root (or add sudo before each of these commands): apt-get update apt install -y ca-certificates curl gnupg lsb-release mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null chmod a+r /etc/apt/keyrings/docker.gpg apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin service docker start systemctl enable docker Windows 10+ (tested on 10, should work on >10): Use Chocolatey, a command-line package manager for Windows. Chocolatey also has a gui if you insist. Once installed, run: choco install -y docker-desktop Mac, Chromebook, etc: You are alone. But we believe in you.
如果你在MAC MAMP上
安装并运行XAMPP: http://www.apachefriends.org/en/xampp.html
现在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
另一种选择是Zend服务器社区版。
推荐文章
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- PHP/MySQL插入一行然后获取id
- 我如何排序一个多维数组在PHP
- 如何在PHP中截断字符串最接近于一定数量的字符?
- PHP错误:“zip扩展名和unzip命令都没有,跳过。”
- Nginx提供下载。php文件,而不是执行它们
- Json_encode()转义正斜杠
- 如何在PHP中捕获cURL错误
- 如何要求一个分叉与作曲家?
- 加载HTML文件到WebView
- 如何在php中创建可选参数?
- 在文本文件中创建或写入/追加
- 为什么PHP的json_encode函数转换UTF-8字符串为十六进制实体?
- 如何从一个查询插入多行使用雄辩/流利