阅读并尝试以下建议后:这里和这里,我仍然无法让 apache 执行 perl 脚本。我在 macOS High Sierra 上并运行 brew apache。
如果我使用 执行终端中的脚本perl myscript.cgi
,该脚本可以正常工作。该脚本myscript.cgi
是可执行文件,并且以该行开头#!/usr/bin/perl
。我仔细检查了which perl
perl 的位置。问题是从浏览器点击时它不会执行。结果是以纯文本显示的脚本。
我的httpd.conf文件:
Include /usr/local/etc/httpd/original/httpd.conf
Listen 80
Listen 443
User _www
Group _www
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
LoadModule ssl_module lib/httpd/modules/mod_ssl.so
<FilesMatch "\.php$">
SetHandler "proxy:unix:/tmp/php-fpm.sock|fcgi://localhost:9000/"
</FilesMatch>
Include /usr/local/etc/httpd/vhosts/*.conf
在 /original/httpd.conf 中,我取消了以下内容的注释:
<IfModule !mpm_prefork_module>
LoadModule cgid_module lib/httpd/modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
LoadModule cgi_module lib/httpd/modules/mod_cgi.so
</IfModule>
在 /usr/local/etc/httpd/vhosts/myhost.conf 中
<VirtualHost *:443>
ServerName myhost.com
DocumentRoot /Users/pathTo/webroot/
<Directory /Users/pathTo/webroot/>
Require all granted
AddHandler cgi-script .cgi .pl
Options +FollowSymLinks +ExecCGI
</Directory>
SSLEngine on
SSLCertificateFile /usr/local/etc/httpd/certs/wildcard.crt
SSLCertificateKeyFile /usr/local/etc/httpd/certs/wildcard.key
</VirtualHost>
有人知道为什么 apache 仍然无法执行 perl 脚本吗?