【问题标题】:Why doesn't shell_exec of php work with here?为什么 php 的 shell_exec 不能在这里使用?
【发布时间】:2015-05-07 04:20:52
【问题描述】:

我有一个 php 脚本和一个使用 c# 创建的 exe 文件。我希望 php 执行该 exe 文件。我尝试使用shell_exec 命令。但是什么都没有发生!!然后我尝试了 echo shell_exec("dir");,它通过显示信息来工作。

为什么不执行exe文件。几个月前我用过它,它在 xpdf、brc 和 opera 上运行良好。

我尝试给出绝对路径,我尝试添加到路径变量。但它不工作。 有趣的是,我的 exe 文件可以从命令行完美执行。我认为php有问题。

我使用的是 Apache 2.4 和 PHP 5.6

PHP 脚本:

<?php
echo shell_exec("Face_Trainer.exe");
?>

C# exe 文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Face_Trainer
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Beep();

        }
    }
}

我需要这个 shell_exec 来完成我的项目,其他都很好,就是这个函数!

【问题讨论】:

  • Face_Trainer.phpC# 文件有什么关系?
  • @MartinKonecny 这是一个错字...对不起。因为脚本很小,我只是输入了它。它的 Face_Trainer.exe
  • 当您单独运行 .exe(即从 Windows 资源管理器中)时,它会发出哔哔声吗?
  • @WaiHaLee 是的,它会发出哔哔声。它甚至通过 cmd 发出哔哔声,因为我已将其路径添加到路径变量。

标签: c# php command-line console shell-exec


【解决方案1】:

解决方案:

您正在使用非交互式外壳,这就是您听不到哔哔声的原因。您可以通过写入文件来检查它,如果创建了文件,您的程序在当前设置中运行良好。


其他说明:

如果你真的尝试执行一个 exe 文件,你应该使用正确的扩展名:

<?php
echo shell_exec("Face_Trainer.exe");
?>

由于这似乎是一个错字,这里有另一个提示:我将运行一个批处理文件,您可以在其中为您的应用程序设置环境。举个例子:

@echo off
set path=%path%;x:\your\path
cd x:\dir\of\exe
Face_Trainer.exe

【讨论】:

  • 我试过了。我设置路径并从 normall 命令行执行它,如 >Face_Trainer.exe 并且它发出哔哔声。然后我创建了一个批处理文件,在双击 bat 文件时它发出哔哔声,但通过 php,它只是回显了 bat 文件的位置和其中的命令,我的意思是 location/of/bat/Face_Trainer.exe
  • 我认为 php 或 apache 已损坏...当我回显 shell_exec("path");它显示的旧路径。我正在尝试重新安装。谢谢你帮助我
  • 只是想你真的想让你的电脑发出哔哔声还是这只是一个测试?如果它是一个测试尝试不同的东西,比如写一个文件。我可以想象 beep 命令在非交互式 shell 上不起作用。
  • 不,你误会了我的意思,而不是执行你的 exe 文件,你应该只从我的答案中执行我的 bat 文件。如果您在 exec 调用中设置路径,则更改将仅应用该 php 行,而不是下一个调用。
  • 它是一个入门测试......实际上它是一个人脸识别软件的人脸训练模块。我只想在php从上传目录复制图像后启动模块,所以shell exec
猜你喜欢
  • 2021-01-06
  • 2023-03-29
  • 2013-07-09
  • 2018-06-19
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
相关资源
最近更新 更多