【问题标题】:Tiny web - can't get php.exe to return dataTiny web - 无法让 php.exe 返回数据
【发布时间】:2016-05-14 09:49:18
【问题描述】:

我无法让Tiny web local server 使用 php.exe 生成网页 - 并学习 PHP。我已关注instructions from the Ritlabs page 并完全理解 Tiny web 仅使用写入 STDOUT 的控制台应用程序。我正在使用带有 ChromePortable 的 Windows,因为 IE 的“安全功能”旨在阻止此类活动。

为了让 Tiny Web 工作,cgi-bin 文件夹中的脚本必须与可执行文件正确关联,并且扩展名应该存在于 PATHEXT 环境变量中。 Tiny Web 从 Windows 注册表中读取文件关联来执行脚本。 Tiny web 没有配置文件。可执行文件必须是控制台程序而不是 GUI 应用程序。一些可执行文件需要加载脚本文件的选项,我倾向于使用批处理文件来按顺序获取参数。

例如gawk.bat

:Change to current batch file location - with gawk.exe
cd /D "%~dp0"
:Run
gawk.exe -f "%1" %~2 

这将运行我的“http://localhost:88/cgi-bin/test.awk”并生成动态网页。我假设如果 php 脚本与批处理文件相关联,则 php.exe 将以类似的方式工作:

例如php.bat

:Change to current batch file location - with php.exe
cd /D "%~dp0"
:Run
php.exe -f "%1" -- %~2

我的 test.php 脚本包含:

<?php echo "Content-Type: text/plain\n\n";?>
<?php echo "Hello World - from PHP";?>

但是,这给了我一个错误:“CGI 脚本 /cgi-bin/test.php 没有返回任何内容”,尽管它在 DOS 命令提示符下完美运行!我尝试使用 php-cgi.exe "%1" 运行 .php,这给出了相同的服务器错误,并且在命令行前面添加了一个标题,然后按预期打印。

我不想(没有权限)安装 ISS 或任何其他软件。具有讽刺意味的是,我正在努力使用 Tiny web 运行 php cgi 脚本,但可以使用 COMSPEC、LUA51.EXE、GSLSHELL.EXE、CSCRIPT.EXE、GAWK.EXE 甚至 SQLITE3.EXE 生成动态页面!

第一季度。我是不是弄错了 test.php?

第二季度。我应该如何处理 php 文件以通过 STDOUT 将结果返回到 Tiny web?

第三季度。为了使这个便携,我很想为 Tiny.exe 周围的环境建立临时文件关联。如果我有管理员权限,我会在启动 Tiny web 的 run.bat 中冷使用 assoc 和 ftype。你工作场所的 windows 子管理世界有什么线索吗?

提前致谢。

【问题讨论】:

    标签: php windows batch-file cmd localhost


    【解决方案1】:

    如果您分析TinyWeb source code,它会以以下方式运行/cgi-bin/ 中的脚本:

    如果扩展名是.exe,它将直接运行。否则,它会使用 Windows Win32 API call FindExecutable() 找到此类文件扩展名的可执行文件

    然后,如果已找到此文件扩展名的 .exe 可执行文件,它将使用此可执行文件运行并将您的脚本路径作为第一个命令行参数传递。

    要检查是否有与您的脚本扩展相关联的可执行文件,请在cgi-bin 文件夹中运行 cmd.exe,然后从命令行输入您的脚本名称。它应该向屏幕输出。我的 Windows 机器上没有安装 PHP,但我有 Perl,如果我输入 myscript.pl,它会输出到屏幕,所以它确认 FindExecutable() 找到了它。此外,当我输入perl.exe myscript.pl 时,它也会产生正确的输出——这就是 TinyWeb 运行它的方式。当您运行cmd.exe 并输入test.php 时会发生什么?它是否打印所需的输出?顺便说一句,我没有听说有人能够使用 PHP 运行 TinyWeb。但是如果你从命令行输入test.php 并且php.exe test.php 有效,那么TinyWeb 将运行你的PHP 脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多