按照标题,我创建了一个非常简单的测试工具.我想用内置的webserver(PHP 5.4)测试它,但似乎不可能.
php -S localhost:80 /path/to/myphar.php
Run Code Online (Sandbox Code Playgroud)
结果:空白页面(在phar前端控制器中index.php正在进行一些HTML输出).
php -S localhost:80 -t /path/to/folder_with_index_and_phar
Run Code Online (Sandbox Code Playgroud)
使用加载器脚本:
<?php
require 'phar://myphar.php'
Run Code Online (Sandbox Code Playgroud)
再次生成一个空白页面.
这甚至是可能的还是我必须使用Apache?
编辑:一年后我再次需要这个.这是正在发生的事情(来自答案):
php -S localhost:80 -t /path/to/app.phar
php -S localhost:80 -t /path/to/app.phar
Run Code Online (Sandbox Code Playgroud)
导致错误:/ path/to/app.phar不是目录.
而:
php -S localhost:80 -t .
http://localost/app.phar/foo/bar
Run Code Online (Sandbox Code Playgroud)
工作,但我不需要app.phar "前缀"!
使用Apache并将目录索引设置为app.phar按预期工作.
php -S localhost:80 -t /path/to/phar由于该-t参数旨在用于目录,因此无法工作.诀窍是php webserver支持将路由器作为参数传递.因此,假设你的phar在/ tmp(它可以在任何地方),这就是你如何创建一个简单的路由器,并设置网络服务器:
echo '<?php require("/path/to/phar");'>/tmp/router.php
php -S localhost:80 /tmp/router.php
Run Code Online (Sandbox Code Playgroud)
php -S localhost:8080 phpinfo.phar
Run Code Online (Sandbox Code Playgroud)
从我创建的一个简单的phar文件开始,这似乎对我很有用 phpinfo();
我在PHP文档中注意到,在创建PHAR文件时,您似乎需要为CLI和WWW接口设置存根.
http://php.net/manual/en/phar.buildfromdirectory.php
<?php
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
// add all files in the project
$phar->buildFromDirectory(dirname(__FILE__) . '/project');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
Run Code Online (Sandbox Code Playgroud)
编辑
具体来说,这就是我所做的.
#!/usr/bin/env php
<?php
$phar = new Phar('phpinfo.phar', 0, 'phpinfo.phar');
$phar->buildFromDirectory(__DIR__ . '/phpinfo');
$phar->setStub($phar->createDefaultStub('index.php'));
Run Code Online (Sandbox Code Playgroud)
创建目录的phar文件:
phpinfo/
??? index.php
Run Code Online (Sandbox Code Playgroud)
和index.php只是:
<?php phpinfo();
Run Code Online (Sandbox Code Playgroud)
小智 2
所以,我不明白为什么你需要 Apache 服务器。命令后
php -S localhost:80 -t /path/to/myphar.php
PHP 5.5.9-1ubuntu4 Development Server started at Fri Jun 6 22:27:49 2014
Listening on http://localhost:80
Document root is /tmp/http
Press Ctrl-C to quit.
Run Code Online (Sandbox Code Playgroud)
意味着一切都很好,你到浏览器的地址栏写
http://localhost:80
Run Code Online (Sandbox Code Playgroud)
并查看脚本执行的结果
| 归档时间: |
|
| 查看次数: |
1901 次 |
| 最近记录: |