所以我有一个 apache-2.4.25(在 Debian/stretch 中打包),并且想使用 SSI 的exec
方法。
<!--#exec cmd="ls" -->
不幸的是,这给了我一个错误:
[an error occurred while processing this directive]
在日志文件中显示
unknown directive "exec" in parsed doc /path/to/some/user/public_html/ssitest/index.shtml
我发现Options +IncludesNOEXEC
我的系统已启用该选项userdir.conf
(这会禁用exec
SSI 指令)。因此,我尝试针对单个特定 VHost 关闭该选项,方法是将以下内容放入以下VirtualHost
部分:
Options -IncludesNOEXEC
Options +Includes
不幸的是,这并没有帮助。
因此我尝试使用该Directory
部分,但仍然没有运气:
Alias /ssitest/ /path/to/some/user/public_html/ssitest/
Options -IncludesNOEXEC
Options +Includes
<Directory /path/to/some/user/public_html/ssitest/>
Options -IncludesNOEXEC
Options +Includes
</Directory>
每当我尝试访问我的页面时,我都会得到在执行此命令时出现的错误错误。
那么有没有办法禁用之前设置的选项?
答案1
您需要启用 mod_cgi。我现在检查 ssi exec 在 Ubuntu 16.04+apache2 上运行的情况 - 如果您启用 mod_include 和 mod_cgi,并放入Options +Includes
htaccess 或 中,它就会起作用<Directory... >
。
Options -IncludesNOEXEC
对我来说没有必要。
答案2
对于 ubuntu,apache2 web 服务器启用该 mod,使用以下命令
a2dismod cgi
与
cd /etc/apache2/sites-available
vim 000-default.conf
添加以下内容:
<Directory /var/www/vhosts/YOUR-DOMAIN.COM/httpdocs>
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Options +Includes
</Directory>