【发布时间】:2013-06-04 13:45:14
【问题描述】:
构成可移动类型的 CGI 脚本和工具具有硬编码的 perl 二进制名称
#!/usr/bin/perl -w
除非我手动将所有这些实例替换为
#!/usr/bin/env perl
use warnings;
在我的私有版本 perl(安装 perlbrew)下似乎无法运行移动类型。有什么方法可以在 perlbrew perl 下运行可移动类型,而无需手动进行这些更改?
【问题讨论】:
-
除非你用 my $app = Plack::App::WrapCGI->new(script => "/path/to/script.cgi" 运行脚本,执行 = > 1)->to_app; 而不是 Plack::App::WrapCGI->new( script => "/path/to/script.cgi") 然后starman 不是去 exec+fork 运行 CGI 脚本,所以它运行的 Perl 与 Starman 运行的 Perl 相同,即你的 perlbrew perl
-
另外 #!/usr/bin/env perl 实际上不足以在适当的 perlbrewed perl 下运行您的脚本,有关更多详细信息,请参阅 github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/issues/58。
-
MovableType 确实使用 execute => 1 运行 cgi 脚本,这就是使用系统 perl 的原因。感谢您指出这一点。
-
@Ya.Perelman 我前段时间开始使用 Perlbrew,对此我没有任何答案。我浏览了安装在本地主机上的 MT 实例并更改了 shebang 行,而不是花时间在上面。这不是一个新问题,但这并不意味着它不应该提交给 MT 开发团队。
-
@Dave 在阅读了上面 MkV 的链接后,我倾向于相信 MT 团队会在每一方都找到一块石头和一块坚硬的地方:)。这是一个时代,安装脚本会很方便.....所以我只写了一个递归遍历文件夹并将shebang行替换为正确位置的脚本。 perlbrew 的“别名”命令在一定程度上减轻了这样做的痛苦,因为我使用的是从 github 克隆的版本。问题不仅在于 cgi 脚本,还在于工具文件夹中的大量内容以及 Makefile 中调用的缩小脚本
标签: perl movabletype perlbrew