我不能让微小的networking本地服务器使用php.exe来生成网页 – 并学习PHP。 我遵循了Ritlabs页面的指示 ,完全理解Tiny web只使用写入STDOUT的控制台应用程序。 我正在使用ChromePortable作为IE浏览器的“安全function”是desinged停止这种types的活动。
对于小型Web工作,cgi-bin文件夹中的脚本必须与可执行文件正确关联,并且扩展名应该出现在PATHEXT环境variables中。 微小的Web从Windowsregistry中读取文件关联来执行脚本。 Tiny web没有configuration文件。 可执行文件必须是控制台程序而不是GUI应用程序。 一些可执行文件需要加载脚本文件的选项,我倾向于使用batch file来按顺序获取参数。
例如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 ”并生成dynamic网页。 我假设php.exe会以类似的方式工作,如果PHP脚本与batch file关联:
例如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文件,并且这给出了相同的服务器错误,并且在命令行中预先打印了一个标题,然后按预期打印。
我不想(没有破坏)安装国际空间站或任何其他软件。 很讽刺的是,我正努力用Tiny web运行php cgi脚本,但是可以用COMSPEC,LUA51.EXE,GSLSHELL.EXE,CSCRIPT.EXE,GAWK.EXE甚至SQLITE3.EXE生成dynamic页面!
Q1。 我刚刚得到了错误的test.php?
Q2。 我应该如何处理PHP文件,通过STDOUT获得结果返回到微小的networking?
Q3。 为了使这个便携式,我很乐意为Tiny.exe周围的环境临时文件伙伴。 我冷run使用assoc和ftype在我的run.bat启动Tinynetworking,如果我有pipe理员privilages。 在你的工作场所的窗口的子pipe理世界的任何线索?
提前致谢。
如果您分析TinyWeb源代码,它将以下列方式在/ cgi-bin /中运行脚本:
如果扩展名为.EXE,则直接运行,否则,使用Windows Win32 API调用FindExecutable找到此类文件扩展名的可执行文件: https ://msdn.microsoft.com/en-us/library/windows/desktop /bb776419%28v=vs.85%29.aspx
然后,如果为该文件扩展名找到了.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脚本。