代码之家  ›  专栏  ›  技术社区  ›  Abhi

浏览器运行失败

  •  0
  • Abhi  · 技术社区  · 6 年前

    我正在用PHP构建C和C++的在线编译器,所以我们正在使用 gcc compiler 要使用“shell_exec”函数执行,

    测试程序

    <?php $output = shell_exec("gcc /var/www/test/main.c 2>&1"); print_R($output); ?>

    如果我在终端执行 php test.php ,运行良好并且正在创建 a.out 编译文件。

    但是如果我在浏览器中运行 localhost/test.php ,它给出以下错误

    gcc:尝试执行“cc1”时出错:execvp:没有这样的文件或目录

    我完全同意(0777) test.php ,

    $其中是cc1//cc1:

    请在下面找到我正在使用的版本

    GCC版本5.4.0

    PHP7.0.32

    操作系统:ubuntu 16.04

    服务器:nginx

    有没有使用PHP来运行C和C++的替代品,或者如何解决浏览器中运行的这个问题。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mathieu Shrikanth M D    6 年前

    读取错误消息时,问题来自两个问题:

    • php 不能发现 gcc 自从 $path 变量设置不正确,在 PHP 文件,你应该键入 PATH=/usr/bin && gcc /var/www/test/main.c . 在这个例子中, 海湾合作委员会 还有其他的东西 /usr/bin 目录。知道在哪里 cc1 例如,键入 find / -name cc1 并将其添加到 $PATH : PATH=/some/path:/some/other/path
    • 当前目录 PHP 不能是可写的,因此请指明必须在何处创建生成的文件: gcc /var/www/test/main.c -o /var/www/test/main
    • 号码簿 /var/www/test 必须由用户运行的可写性 PHP 程序。

    请注意,运行 PHP 程序不是必需的 root

    所以您的php文件应该如下所示:

    <?php
     $output = shell_exec("PATH=/usr/bin && gcc /var/www/test/main.c -o/var/www/test/main 2>&1");    
     print_R($output);
    ?>