目录结构
phar归档文件构建脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
// build.php
// 打包的文件名
$pharFileName = 'hellophar.phar';
// 打包是追加模式,为了保证打包里内容最新,先删除之前的包
file_exists($pharFileName) && unlink($pharFileName);
$phar = new Phar($pharFileName, 0, $pharFileName);
$dir = dirname(__FILE__);
// 打包 src 目录里面的内容,不包含 src 目录本身
$phar->buildFromDirectory($dir . '/src');
// main.php 执行 .phar 文件时执行的,index.php web 服务器入口文件
$phar->setDefaultStub('main.php', 'index.php');
|
phar运行时的入口文件
入口文件类似我们 C 语言的 main.c
,Java 中的 main
方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?php
// main.php
// 加载工具方法文件
require 'function.php';
// phar 其实是一个压缩包,要执行必须解压,定义解压的目录
$path = sprintf('%s/pharextract/%s', Extract_Phar::tmpdir(), 'hellophar');
// 通常的解压路径:C:\Users\用户名\AppData\Local\Temp\pharextract\phar项目名称
$path = realpath($path);
// 为了方便了解应用被解压的目录,我们打印出来
echo sprintf("Application Dir: %s\n", $path);
// 解压目录不存在,则解压 hellophar.phar
is_dir($path) || Extract_Phar::go(false);
// 解析命令
$host = parse_cmd($argv, ['-h', '--host'], '127.0.0.1');
$port = intval(parse_cmd($argv, ['-p', '--port'], 80));
// 在解压目录里运行 php 内置 http 服务器
$cmd = sprintf('php -S %s:%d -t %s', $host, $port, $path);
exec($cmd);
// echo shell_exec($cmd), PHP_EOL;
|
提交表单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="resources/css/bootstrap.min.css">
<title>home</title>
</head>
<body>
<div class="container">
<div class="row">
<h1>php app</h1>
<div class="row">
<form method="post" action="post.php">
<div class="mb-3">
<label for="username" class="form-label">Username</label>
<input type="text" class="form-control" id="username">
<div id="emailHelp" class="form-text">please input your name.</div>
</div>
<button type="submit" class="btn btn-primary" onclick="return;">Submit</button>
</form>
</div>
</div>
</div>
</body>
</html>
|
post文件
1
2
3
4
5
6
7
|
<?php
date_default_timezone_set('Asia/Shanghai');
$now = date('Y-m-d H:i:s');
exit($now);
|