猿问

从 PHP 的 shell_exec() 函数执行 Golang 二进制文件

我编译了一个带有 1 个参数的 golang 二进制文件,生成一个 PDF 文件,然后将其上传到 AWS S3。二进制完美的作品在外壳,尝试使用PHP的执行它然而,当shell_exec()exec()passthru()service()功能,它不会执行(没有错误消息或日志条目)。我什至尝试从 PHP 的 shell_exec 调用 shell 脚本 (.sh),它执行二进制文件(在 shell 中也可以正常工作),但无济于事。

权限很好,PHPshell_exec()适用于所有其他实例。


catspeake
浏览 151回答 2
2回答

三国纷争

看来我找到了自己的答案:事实证明,GoLang 二进制文件在查找与二进制文件本身的目录路径关联的资产时遇到了问题。对于任何有同样问题的人,事实证明@Intermernet 的回答会对你有很大帮助。(请注意@Intermernet 的答案不是公认的答案)就我而言,编译后的二进制文件无法从可执行工作目录中找到资产(pdf、图像等)。对于编译需要跟踪资产的可移植 golang 二进制文件的任何人,以下代码将是您的朋友:ex, err := os.Executable()if err != nil {    panic(err)}exPath := filepath.Dir(ex)请注意,和exPath之间将不一样。因此,您需要使用构建版本进行测试。go rungo build为什么我没有收到任何错误消息,我将保留另一个问题。

陪伴而非守候

shell_exec 函数可能需要 sudo 的密码,sudo 密码的 Linux 管道shell_exec('echo "YOURPASS" | sudo -u root -S your_script.sh');
随时随地看视频慕课网APP
我要回答