跳到主要内容

PHP 在线运行工具

在浏览器里运行 PHP 代码验证语法与纯逻辑,解释器以 WebAssembly 形式在本机执行,代码不上传。

Ctrl / ⌘ + Enter 运行
运行后这里显示 echo / print / var_dump 的结果

跑的是编译成 WebAssembly 的 PHP 8.3(实测 8.3.33,php_sapi_name() 为 wasm,memory_limit 256M),解释器整个装在你的浏览器里,代码不会发送到服务器,也不需要服务器上有 PHP。

内置扩展比想象中全:字符串、数组、正则、日期、JSON、mbstring(mb_strlen 按字符数算,中文不会被当成 3 个)、iconv、GD、hash、openssl、bcmath、ZipArchive 都实测可用;PDO 自带 sqlite 驱动,能开内存库。文件读写在这个虚拟磁盘里有效,关掉页面就没了。

用不了的只有两类:连不上外网(curl / file_get_contents 的远程请求会握手超时后失败)、没有进程(exec / shell_exec / proc_open 已在 php.ini 里禁用,调用直接报 undefined function;它们在 wasm 里本来也没有可执行的东西,不拦掉的话会一直卡住)。mysqli 与 intl 没有打包。

PHP 跑在独立的 Web Worker 里,输出会随脚本推进刷出来(实测 echo 后接 usleep(3s),前一行 0.25 秒就到了,后一行 3.3 秒才到)。单次执行上限 10 秒,超了会被强制中断,也可以点「中断」提前停 —— 卡住的只是这条线程,页面照常能用。要留意:纯计算的死循环会把 worker 自己的事件循环也占住,那种脚本在卡死前打出的内容来不及送出,中断后就看不到了。中断之后下次运行要重新初始化解释器,约 1 秒。

首次运行需要下载约 17.5 MB 的运行时(gzip 后约 7 MB),完成后浏览器会缓存。

这个工具是什么

PHP 在线运行工具把 PHP 解释器编译成 WebAssembly,直接在你的浏览器里执行代码。写一段 PHP、点运行,结果立刻显示在下方——不需要本地环境,不需要服务器,代码也不会离开这台机器。

适合验证语法和一个函数的具体行为:字符串怎么截、数组函数返回什么、日期加减算得对不对。

什么时候用它

  1. 确认内置函数的返回值与边界行为,比如 array_filter 不传回调时怎么处理空值。
  2. 验证正则:preg_match 的分组、贪婪与懒惰匹配分别匹配到什么。
  3. 试算日期时间:DateTime 的加减、时区转换、strtotime 对某种写法的解析结果。
  4. 区分数组函数:array_map、array_walk、array_reduce 的返回值与副作用差别。
  5. 快速试一段字符串处理逻辑,确认无误再搬进项目。

有什么限制

  • 没有网络扩展:curl、fsockopen、file_get_contents 取远程地址都不可用,运行环境连不上外网。
  • 没有数据库扩展:PDO、mysqli 不存在,不能连接 MySQL。
  • 没有进程相关函数:exec、shell_exec、proc_open 都被禁用,也不能访问宿主机的文件系统。
  • 没有 mb_* 系列与 intl 扩展,涉及多字节编码处理与本地化格式化的代码会提示函数不存在。
  • 不能加载 Composer 依赖,require vendor/autoload.php 会失败,只能用标准库。
  • 首次运行需要下载约 18 MB 的运行时(压缩后约 7 MB),网络慢时等待比较明显。

常见问题

Q:代码会发送到服务器吗? A:不会。PHP 解释器是下载到你浏览器里执行的 WebAssembly 模块,代码与数据都不离开本机。

Q:为什么 curl_init() 提示未定义函数? A:这个构建不含网络扩展,也不允许访问外网。需要调接口的话,可以先用本站的「cURL 转代码」生成对应写法,再到本地项目里跑。

Q:能连数据库吗? A:不能,没有 PDO 与 mysqli。想验证 SQL 逻辑可以用「SQL 在线运行工具」,那是跑在浏览器里的 SQLite。

Q:为什么第一次运行特别慢,后面就快了? A:第一次要下载约 18 MB 的解释器,下载完成后浏览器会缓存,之后单次运行通常在几百毫秒内。

Q:用的是哪个 PHP 版本? A:PHP 8.3。语法与标准库行为以 8.3 为准,和你本机的 8.1 或 8.4 在细节上可能有差异。