php - 使用 php exec 函数执行 Node 命令时出错

标签 php node.js apache centos

我正在尝试在 Centos 服务器上从 php 执行 nodejs 文件。当从终端执行该命令时,它工作正常(在使用以下命令 su -s/bin/bash apache 切换到 apache 用户之后),但是当在浏览文件时执行代码时,它会引发以下异常:

["","","#","# Fatal error in , line 0","# Check failed: SetPermissions(protect_start, protect_size, PageAllocator::kReadExecute).","#","#","# ","#FailureMessage 对象:0x7fffd9b37760"]

  • 我也改变了绝对路径,但没有运气。
  • 授予 index.js 文件 777 权限。
  • 来自终端的 Testet 并且工作正常:

  • php -r 'echo exec("/usr/bin/node/var/www/html/index.js/var/www/html/source_files/2>&1");'

     <?php
     try {
           exec("/usr/bin/node /var/www/html/index.js /var/www/html/source_files/ 2>&1", $out, $err);
    
            if ($err == 0) {
                return 1;
            } else {           
                return 0;
            }
        } catch (Exception $e) {
            error_log($e);
            return 0;
        }
    ?>
    

    最佳答案

    如果您使用的是 selinux,请尝试暂时禁用它:

    setenforce 0
    

    尝试运行你的 node.js 脚本。如果它运行,您可能需要 更改 selinux httpd 设置 .执行以下命令列出 httpd 服务的所有 selinux 设置:
    /usr/sbin/getsebool -a | grep httpd
    

    你会看到两个相关的设置httpd_ssi_exechttpd_execmem .
    设置它们:
    setsebool -P httpd_ssi_exec=1
    setsebool -P httpd_execmem=1
    

    之后尝试再次启用 selinux 并运行 node.js 脚本以查看更改是否有帮助:
    setenforce 1
    

    关于php - 使用 php exec 函数执行 Node 命令时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57241521/

    相关文章:

    javascript - 通过 Javascript 的 location.reload(true) 传递变量

    php - 使用 mysql 和 ajax 用 FLOT 绘制图形

    php - 我需要使用 PHP 替换字符串中 [IMG] 的所有实例

    node.js - Nodejs 使用 Sequelize。 "[].belongsTo called with something that' 不是 Sequelize.Model at Function 的子类。”

    linux - 保护在 apache 服务器上运行的每个站点的源代码

    spring - NoClassDefFound错误: org/apache/commons/pool/KeyedObjectPoolFactory BasicDataSource Spring

    PHP - 无法从另一个类访问数据库连接器类。我究竟做错了什么?

    javascript - Node.js (Express API) : req. body.myobject 未定义且无法工作

    javascript - SignalR 核心 - 尝试将 clientId 传递给 Hub,无法弄清楚如何接收

    apache - svn:存储库暂时移至 'main' ;请搬迁