计算机术语shebang,如何在Windows下使用Apache 2忽略Perl shebang?
我已经在Windows计算机上设置了本地Perl Web环境。 我正在使用的应用程序最初来自Linux服务器,因此源.pl文件的显示如下所示:
#!/usr/bin/perl
这会在Windows开发机上导致以下错误:
(OS 2)The system cannot find the file specified.
是否可以更改我的Apache 2 conf,以便在Windows计算机上忽略shebang? 当然,我可以将shebang设置为#!c:\perl\bin\perl.exe,这很明显。 但是问题在于部署更新的文件。 显然,在每次部署时都将其改回来是非常不便的。 我在Windows 7上使用ActivePerl。
更新:
我应该提到,我需要保持警惕,以便脚本可以在我们共享的托管Linux生产服务器上运行。 如果我没有此约束并且不必使用shebang,那么显而易见的答案就是不使用它。
您的许多问题都遭受了XY问题(perlmonks.org/index.pl?node_id=542341)。 您问自己认为解决方案是什么,而不是问问题。 在这种情况下,我认为您实际上不需要跨平台的Shebang线,而只需要一个适用于Windows 7的ActivePerl(使用Apache 2)的线即可。
@brian太棒了! 谢谢你的提示。 我一直都知道我这样做,这就是问题所在。 我将在以后的答案中尝试询问问题,而不是已经下定决心了。
好了,既然您已经更改了问题,那么它变得容易得多:您无需在脚本中添加shebang行。 除非您希望系统找出要调用的解释器,否则就不需要它。 在你的情况下那没关系。
@brian问题已更新。
我在脚本中使用#!/usr/bin/perl,并在Windows上配置Apache以忽略shebang行。加
ScriptInterpreterSource Registry-Strict
到httpd.conf并按照Apache文档中的说明设置Windows注册表项。
这是导出密钥时得到的:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.pl\Shell\ExecCGI\Command]
@="c:\\opt\\perl\\bin\\perl.exe"
我一直在Windows笔记本电脑上使用Apache和ActiveState Perl以及在服务器上使用ArchLinux附带的Apache和Perl发行版来使用此设置。
Apache文档(我在上面链接到该文档)指出:
The option Registry-Strict which is new in Apache 2.0 does the same thing as Registry but uses only the subkey Shell\ExecCGI\Command. The ExecCGI key is not a common one. It must be configured manually in the windows registry and hence prevents accidental program calls on your system. (emphasis mine)
根据文档的建议,我已经在所有情况下尝试了此操作:server config, virtual host, directory, .htaccess-但这似乎无法解决错误,我该怎么办?
是的,我已经重新启动。我正在使用ActivePerl,所以我不知道,我需要寻找什么注册表项?我在DocumentRoot下方的httpd.conf中使用指令(默认配置行177)。
谢谢,我用REG_SZ值C:\Perl\bin\perl.exe -wT添加了键HKEY_CLASSES_ROOT\.pl\Shell\ExecCGI\Command,它可以正常工作!
没有便携式的Shebang线。即使在相同的平台和体系结构上,也可能有人在不同的位置安装了perl。
诀窍是不要手动安装模块和脚本。当您将所有内容打包为发行版并使用模块工具链时,shebang行会自动修改为指向您用于安装所有内容的perl。您不必考虑这些细节。 :)
我无法使用此解决方案,因为在没有shebang的情况下,.pl文件不会在共享Linux托管服务器上执行。不幸的是,我无法更改服务器配置。如果是这种情况,我会为Perl添加一个Apache处理程序。另外,该站点上有许多使用shebang的现有.pl脚本-如果我对Perl Id更有信心,可以更改此设置,但是可以说,我不想踩任何人的脚趾。
好吧,您不必在两个安装上都使用相同的shebang行。正确的安装将为您解决问题。
无论在* nix还是Windows上,我在所有perl上都使用#! /usr/bin/env perl作为shebang。 Windows只会忽略它,而Unixen会跟随env进入所选的perl disto。
在win7及更高版本中,您也可以使用" dos"命令mklink进行此操作。
以管理员身份启动cmd shell,然后执行以下操作:
mklink /d c:\usr c:\Perl # Activestate perl in c:\Perl\bin\perl.exe
mklink /d c:\usr c:\xampp\perl # Xampp perl in c:\xampp\perl\bin\perl.exe
我的工作方式是将perl.exe复制到c:/ usr / bin /并将其重命名为perl(剥离.exe)
安装任何Windows Bash版本(例如Cygwin,MSYS2或GnuWin32);
创建一个简单的重定向shell脚本:
创建一个注册表项:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command]
@=""
[HKEY_CLASSES_ROOT\.pl\Shell\ExecCGI\Command]
@=""
[HKEY_CLASSES_ROOT\.py\Shell\ExecCGI\Command]
@=""
(...等等。)
记下您的httpd.conf文件:
ScriptInterpreterSource Registry
现在,Apache将根据您选择的Bash风格给出的解释来解决Unix shebang的问题。与在注册表中对解释器路径进行硬编码相比,这提供了更大的灵活性。
我没有Windows,但是Perlcritic说:
my $desc = q{Found platform-specific perl shebang line};
my $expl = q{Perl source in parrot should use the platform-independent shebang line: #! perl};
因此,我想#! perl应该可以。
编辑:在linux上不起作用;显然可以在parrot中使用,尽管我看不到他们是如何管理的。
#! perl在我们的Linux服务器上不起作用,但是在我的本地Windows开发机器上可以正常工作。不管怎么说,还是要谢谢你。
是的,我猜它仅适用于parrot。抱歉。
计算机术语shebang,如何在Windows下使用Apache 2忽略Perl shebang?相关推荐
- 如何在windows下让apache支持asp,通过iasp
相关资源下载地址: iAsp2---http://download.csdn.net/source/1012064 / http://www.javatang.com/_download/iasp.r ...
- macos支持exfat吗_[启动盘制作]如何在 Windows 下制作苹果 macOS 启动盘
to 知乎管理员: 此前本文被删, 专门写了篇文章反映问题:关于安装实录-windows下如何制作苹果安装盘文章被删的声明 现按照要求改写文章, 如果再删, 烦劳注明原因. 步入正题: 苹果的镜像格式 ...
- mysql数据库安装以及登录(如何在windows下安装mysql数据库,以及解决mysql8登录报错问题,绝对是保姆级别的,不要错过哦)
目录 概述 MySQL的卸载(选看) 停止MySQL服务 软件的卸载 方式1:通过控制面板方式 方式2:通过360或电脑管家等软件卸载 方式3:通过安装包提供的卸载功能卸载 残余文件的清理 清理注册表 ...
- 如何在windows下安装cygwin
如何在windows下安装cygwin 转载于:https://www.cnblogs.com/zhujiabin/p/5747580.html
- 如何在Windows下发布QT应用程序
如何在Windows下发布QT应用程序 [环境介绍] [操作系统]:Windows 10 64bit [IDE套件]:QT Creator 4.8.0 [编译器版本]:QT5.12.0 MSVC201 ...
- 如何在Windows下强制git使用LF而不是CR + LF?
本文翻译自:How do I force git to use LF instead of CR+LF under windows? I want to force git to checkout f ...
- 如何在 Windows 下创建 macOS 引导介质 (USB 启动盘)
请访问原文链接:如何创建可引导的 macOS 安装介质,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 完整版请参看:如何创建可引导的 macOS 安装介质 补充章节: ...
- 【实用】如何在windows下快速截图?
如何在windows下快速截图? 快速截图是很多人的需求.截图的工具和方案也很多,但是,这里给出一个通用的,被大众认为最高效的一个解决方案. 我们都知道键盘上有一个"prt sc" ...
- 如何在Windows下利用Apche查看MySQL数据库?
本篇文章主要跟大家介绍的是如何在Windows下利用Apche查看MySQL数据库,小杜觉得挺实在的,就整理了一下并分享给大家做个参考,希望大家看完之后有一定的收获.因此,有感兴趣的朋友记得要看完! ...
最新文章
- 2018未来科学大奖揭晓:袁隆平、马大为、林本坚等7位科学家获奖
- 推荐7款好用的cmd命令行终端工具
- Linux软raid创建和维护
- JDK 11版本时间表
- JMS ActiveMQ研究文档
- ExtJS 开发调试工具大全
- SliverLight Web part
- 【ORACLE】20道Oracle运维常见面试题
- python代码规范工具_如何检查python3中的代码规范
- 重载(overload)与重写(override)的区别
- 手把手带你深入解析静态分派 动态分派原理 | 原力计划
- latex 上标 下标怎么打
- PROC SUMMARY
- PCL点云库(2) — IO模块
- 【刘文彬】【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
- 电视屏幕太伤眼,五个地方降低亮度,来缓解眼睛痛.
- 深度Linux拨号软件,Deepin调校及相关资源、常用软件整合贴
- 在html中加入pdf文件吗,如何在网页中显示PDF文件
- 20.深度解密二十:通过搜索引擎进行淘宝客营销玩法
- 学习笔记,初学者对继承、接口的习题练习: 	 模拟给所有员工发工资定义员工Employee类,经理Manager类继承Employee类,职员Clerk类继承Employee类。
热门文章
- #Windows server 2019搭建辅助域控服务器
- 2023最新装修材料石膏线品牌加盟类模板源码+织梦内核开发的
- Learn OpenGL 笔记6.7 HDR(高动态范围)
- 大众点评(最新字体反爬)
- 危害肠道健康的两大敌人:诺如病毒和轮状病毒
- C语言中空格符,制表符,换行符详解
- C语言-编写函数统计输入文本中单词的个数,单词之间用空格符、换行符、跳格符隔开,用@作为输入结束标志。
- 北京VS上海:活着为了工作还是工作为了生活?
- 计算机科技文化节答辩活动主持稿,校园宿舍文化节活动主持词范例
- Java中计算范围时间内有几周并返回每周起止日期