草庐IT

php - 微型网络 - 无法让 php.exe 返回数据

coder 2024-06-12 原文

我无法获得 Tiny web local server使用 php.exe 生成网页 - 并学习 PHP。我关注了instructions from the Ritlabs page并充分理解 Tiny web 仅使用写入 STDOUT 的控制台应用程序。我将 Windows 与 ChromePortable 一起使用,因为 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,这给出了相同的服务器错误,并且在命令行前面添加了一个 header ,然后按预期打印。

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

Q1。我是不是弄错了 test.php?

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

Q3。为了使其可移植,我很乐意为 Tiny.exe 周围的环境创建临时文件关联。如果我有管理员权限,我会在启动 Tiny web 的 run.bat 中冷使用 assoc 和 ftype。在您工作场所的 windows 子管理世界中有任何线索吗?

提前致谢。

最佳答案

如果你分析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 脚本。

关于php - 微型网络 - 无法让 php.exe 返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35206853/

有关php - 微型网络 - 无法让 php.exe 返回数据的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  4. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  5. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  6. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  7. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  8. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  9. ruby - 无法覆盖 irb 中的 to_s - 2

    我在pry中定义了一个函数:to_s,但我无法调用它。这个方法去哪里了,怎么调用?pry(main)>defto_spry(main)*'hello'pry(main)*endpry(main)>to_s=>"main"我的ruby版本是2.1.2看了一些答案和搜索后,我认为我得到了正确的答案:这个方法用在什么地方?在irb或pry中定义方法时,会转到Object.instance_methods[1]pry(main)>defto_s[1]pry(main)*'hello'[1]pry(main)*end=>:to_s[2]pry(main)>defhello[2]pry(main)

  10. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

随机推荐