【问题标题】:shell_exec does not execute from browser requestsshell_exec 不会从浏览器请求中执行
【发布时间】:2019-05-06 03:12:48
【问题描述】:

用户通过 POST 提交数据后,我会显示一个临时页面并使用 shell_exec 在后台执行该过程,至少这是我想要做的。

这是我的页面设置:

C:\laragon\www\index.php

<?php
    try {
        shell_exec("php " . __DIR__ . "/test.php");
    } catch(Exception $e) {
        echo "Exception: " . $e;
    }
?>

C:\laragon\www\test.php

<?php
    $myfile = fopen(__DIR__ . "/testfile.txt", "w");
    echo "test";
?>

如果我转到 localhost 或 localhost/index.php,第二个脚本不会运行。但是,当我尝试从 cmd 调用这两个脚本时,它们都适用。

php C:\laragon\www\index.php

php C:\laragon\www\test.php

它们都工作并创建一个名为 testfile.txt 的文件

【问题讨论】:

    标签: php shell-exec


    【解决方案1】:

    您的网络服务器以特定用户身份运行,并且需要php.exe 的路径,因为网络服务器用户没有路径环境变量:

    shell_exec("c:\path\to\php " . __DIR__ . "/test.php");
    

    【讨论】:

    • 使用 shell_exec("C:\laragon\bin\php\php-7.2.11-Win32-VC15-x64\php.exe " . DIR 运行脚本"/test.php");似乎工作。 shell_exec 不与基本终端一起运行吗?
    • 查看编辑,它在运行网络服务器的用户下运行。在 Linux 中也是如此,我假设是 MacOS。
    • 在 cmd 中,您的用户有一个似乎包含该路径的路径变量。做echo %PATH%,你会看到的。
    • 这解决了我尝试运行 R 脚本的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多