从PHP执行C程序
我正在执行一个C程序,即“exe”,它是来自PHP的可执行文件 我有一个HTML接口,每当我点击一个按钮时,它就会调用一个PHP文件 在PHP上,它调用一个shell脚本。 因此,在PHP上,我使用以下方法:从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
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程序抛出分段错误,但当我单独执行时,它不会抛出任何错误