从PHP执行C程序

从PHP执行C程序,php,c,bash,shell,Php,C,Bash,Shell,我正在执行一个C程序,即“exe”,它是来自PHP的可执行文件 我有一个HTML接口,每当我点击一个按钮时,它就会调用一个PHP文件 在PHP上,它调用一个shell脚本。 因此,在PHP上,我使用以下方法: echo shell_exec('sh auto_script.sh'); shell文件执行程序.exe,如下所示: ./import -file.txt 其中,import是我的可执行C程序.exe,file.txt是我目前正在硬编码的输入 可执行文件“import”与调用的php

我正在执行一个C程序,即“exe”,它是来自PHP的可执行文件

我有一个HTML接口,每当我点击一个按钮时,它就会调用一个PHP文件

在PHP上,它调用一个shell脚本。 因此,在PHP上,我使用以下方法:

echo shell_exec('sh auto_script.sh');
shell文件执行程序.exe,如下所示:

./import -file.txt
其中,
import
是我的可执行C程序.exe,file.txt是我目前正在硬编码的输入

可执行文件“import”与调用的php文件存储在同一目录中

当我在终端上执行shell脚本时,它会以必要的输出正确执行

但是当我试图从PHP执行它时,它不起作用。截至目前,我已授予文件的完全权限。

手册页上的快速检查显示
shell\u exec
具有以下定义:

字符串shell_exec(字符串$cmd)

这意味着参数应该是一个字符串,这确实意味着它应该在引号内。顺便说一句,在这里您不需要中介脚本,所以请执行以下操作:

echo shell_exec('./import "-file.txt"'); //Using relative paths
虽然说将二进制文件放在scripts文件夹中是个坏主意,但我希望上面的内容能帮助您进行操作。

快速查看手册页上的说明,shell_exec具有以下定义:

字符串shell_exec(字符串$cmd)

这意味着参数应该是一个字符串,这确实意味着它应该在引号内。顺便说一句,在这里您不需要中介脚本,所以请执行以下操作:

echo shell_exec('./import "-file.txt"'); //Using relative paths

虽然说将二进制文件放在scripts文件夹中是个坏主意,但我希望上面的内容能帮助您继续。

脚本
cd
是否会导入到包含
导入程序的目录中
/
意味着在当前工作目录中查找程序。您需要在
shell\u exec()
的参数周围加引号。是的,导入是一个可执行文件,它与php文件位于同一目录中,我在shell\u exec中的参数周围加引号。将
2>&1
添加到
shell\u exec()的参数末尾
因此您会看到任何错误消息。如果脚本使用任何bash扩展,则应将其作为
bash auto_script.sh
运行,而不是
sh auto_script.sh
。脚本是否将
cd
导入包含
导入程序的目录
/
意味着在当前工作目录中查找程序。您需要在
shell\u exec()
的参数周围加引号。是的,导入是一个可执行文件,它与php文件位于同一目录中,我在shell\u exec中的参数周围加引号。将
2>&1
添加到
shell\u exec()的参数末尾
因此,您可以看到任何错误消息。如果脚本使用任何bash扩展,则应将其作为
bash auto_script.sh
,,不是
sh auto_script.sh
。当我通过shell脚本执行时,C程序抛出分段错误,但当我单独执行时,它不会抛出任何错误当我通过shell脚本执行时,C程序抛出分段错误,但当我单独执行时,它不会抛出任何错误