2017-06-23 63 views
0

我配置了cgi-bin并试图运行C++目标文件,但不是在浏览器上显示结果,而是下载了可执行文件。C++可执行文件从浏览器下载而不是显示结果

步骤我都遵循:

步骤中的public_html和配置的public_html的cgi-bin。在终端

  1. $ sudo的运行以下命令a2enmod CGI
  2. $ sudo的a2enmod cgid进行
  3. $ sudo的a2enmod USERDIR
  4. $ sudo的服务的Apache2重启
  5. $的mkdir〜/的public_html
  6. $ CD 〜/ public_html
  7. $ mkdir cgi-bin
  8. $ cd/etc/apache2
  9. $ sudo的VIM网站可用/ 000-default.conf
  10. 添加下面的文本文件:


ScriptAlias /cgi-bin/ /home/*/public_html/cgi-bin/ 
<Directory "/home/*/public_html/cgi-bin"> 
     AllowOverride None 
     Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
     SetHandler cgi-script 
     Order allow,deny 
     Allow from all 
</Directory> 
  • $ sudo的服务的Apache2重启
  • 在此之后,我创建了一个C++文件 与此代码

    #include <iostream> 
    
    using namespace std; 
    
    int main() 
    { 
    
        cout << "Content-type:text/html \n\n"; 
        cout << "Hello World - First CGI Program"; 
    
        return 0; 
    } 
    

    编译和使用该

    g++ -o example example.cpp 
    

    当我运行它在浏览器 http://localhost/~username/public_html/cgi-bin/example

    的例子对象文件得到下载,而不是显示在浏览器中的结果链接它。

    +0

    这看起来像是[配置'cgi-bin'的简单步骤](https://linuxconfig.org/simple-cgi-and-apache-examples-on-ubuntu-linux),它可能有你的答案。 –

    +0

    (请原谅我的意见删除!)或许问题是可执行位不是为所有用户设置的 - 'chmod a + x example'是否有所作为?或者它已经是'rwxrwxr-x'之类的吗? –

    +0

    是的,它是权限问题,现在可执行文件在浏览器上正常工作。谢谢。 –

    回答

    1

    脚本未正确写入默认配置文件。否则,所提供的步骤都是正确的,并且工作正常。该代码需要写入配置文件中给出的VirtualHost标签内。

    相关问题