【问题标题】:Execute shellscript from PHP (Localhost, Mac OSX)从 PHP (Localhost, Macos) 执行 shell 脚本
【发布时间】:2013-06-28 06:10:48
【问题描述】:

我想在我的本地主机上从一个基于 php 的网站运行一个 shell 脚本(在 Mac 上使用 MAMP),但很遗憾,它不起作用。

这是 shell 脚本:

#!/bin/bash
open /Users/my_username/Desktop/aiSee.app

如果我从终端运行它,它可以正常工作并打开应用程序。在我的网站中使用此代码,它不起作用:

<?php 
    echo exec('script.sh');
?> 

没有显示错误或其他内容,它只是不起作用。 该脚本与网站的 .php 文件位于同一源。

【问题讨论】:

    标签: php macos shell localhost mamp


    【解决方案1】:

    open 在 bash 中并没有按照您的想法执行。你需要cat

    #!/bin/bash
    cat /Users/my_username/Desktop/aiSee.app
    

    【讨论】:

    • 非常感谢,我试过了 - 但它也不起作用。我不是终端专业人士,但 cat 不是用于以某种方式连接文件吗?
    • cat 也用于列出文件。你的 shell 文件有 '+x' 权限吗?如果你运行your_script.sh会发生什么?
    • 它有 +x 权限,由:chmod +x sript.sh 完成。如果我尝试从终端执行它,我会说 /Users/.../aiSee.app 是一个目录。使用“open”而不是“cat”,它确实打开了 aiSee 应用程序。是否有可能,在操作系统中运行的 localhost (MAMP) 和本机 shell 之间存在问题?
    • "/Users/.../aiSee.app 是一个目录"?好的,您首先想要实现什么?
    • 我其实是想打开aiSee。这是一个能够绘制图形的应用程序。目的是从 web 应用程序运行它(localhost 现在还可以),我认为,最简单的方法是通过 shellscript 来运行它。事实上,如果一切都在服务器上正常运行,脚本就会在那里执行。
    【解决方案2】:

    您的问题解决了吗? 如果没有,请尝试echo exec('sh script.sh');echo exec('bash script.sh');。 这个问题可能会解决你的问题:how to run a .sh file from php?

    【讨论】: