【发布时间】:2021-05-06 04:30:14
【问题描述】:
Apache 2.4 已针对服务器端包含进行了配置,并且只要变量是本地的,就可以正确运行任何传递的 CGI 脚本。但是,我们有一些脚本使用“do”函数从配置文件中提取变量,如下所示:
#!/usr/bin/perl
do '../includes/cgi.conf';
print "Content-type: text/html\n\n";
print $hostname
cgi.conf 包含以下内容:
$host = 'none.nowhere.com';
当在网络服务器上的命令行执行时,变量会按预期填充到输出中。但是,除非在脚本中本地声明变量,否则 Apache 不会按预期打印它。
我正在将应用程序从 RHEL6/Apache 2.2 升级到 RHEL7/Apache 2.4,并且此配置以前可以正常工作,所以我可能在升级到新配置时遗漏了一些东西。
请原谅代码块中的任何拼写错误。代码不是复制粘贴的,实际代码中不存在任何拼写错误。
【问题讨论】:
-
(旁白)“请原谅代码块中的任何拼写错误。” - 您在发布前需要确保代码中没有错别字;你只有5行?!问题中的代码 sn-ps 中的错别字是一个巨大的混乱来源。
-
您正在加载变量
$host,并且您正在打印变量$hostname。它不是同一个变量。 -
该变量在实际代码中是正确的,这是手动将其复制到此处时的拼写错误。我通过向 conf 文件添加额外权限解决了我的问题。