从浏览器(php)启动服务器应用程序

从浏览器(php)启动服务器应用程序,php,macos,Php,Macos,我对php比较陌生,但我目前面临一个问题 我已经修改了MacOSX,使其在服务器上运行,我希望能够使用web浏览器在服务器上启动一些应用程序。最后一个想法是使用一个按钮,当我点击它时,它会在测试后启动应用程序(应用程序已经启动了吗?) 但首先,我从小事做起。我已创建此html页面,其中包含一个脚本: <html> <body> <?php print "hello word"; $output=exec(" open /Applications/C

我对php比较陌生,但我目前面临一个问题

我已经修改了MacOSX,使其在服务器上运行,我希望能够使用web浏览器在服务器上启动一些应用程序。最后一个想法是使用一个按钮,当我点击它时,它会在测试后启动应用程序(应用程序已经启动了吗?)

但首先,我从小事做起。我已创建此html页面,其中包含一个脚本:

<html>
<body>
<?php 
    print "hello word";
    $output=exec(" open /Applications/Cyberduck.app");
    print $output;
?>
</body>
</html>

当我在命令行中启动时,脚本工作正常,但当我尝试从web浏览器启动它时,它根本不做任何事情(除了编写“hello world”)

我曾试图解决编写启动应用程序的shell脚本的问题,但当我从web浏览器启动它时,脚本会运行,但不会打开应用程序

我确信我遗漏了一些非常明显的东西,但通过浏览互联网,我还没有找到任何解决方案(我可以承认,我可能缺乏词汇,我的研究术语可能不相关)

谢谢你的帮助


Marc

问题在于,您的Web服务器与GUI用户运行时的用户和权限不同。 您可以通过使用su或sudo以不同的用户身份运行来解决这个问题。但请注意,使用su时,会弹出一个密码输入,这很难处理


或者,您可以尝试创建一个单独的脚本来启动Cyberduck,并将其设置为setuid位。setuid位允许脚本以脚本所有者的权限自动运行。

这是因为该命令在其运行的服务器上执行命令,而不是在访问者计算机上执行命令。否则这将是一个巨大的安全问题。我不希望应用程序在服务器上启动,而不是在访问者的计算机上启动。事实上,它并不感谢你的建议,我会尝试一下,但是安全吗?setuid位允许你作为不同的用户运行特定的脚本。是的,它稍微增加了攻击向量,而且我现在正在读取Mac OS X 10.5上的StuuID,它看起来不是一个非常古老的操作系统的极端解决方案。您最好只是在那里安装linux。那么您唯一的选择可能是sudo,或者创建一个作为您自己的用户运行的deamon。如果你在运行一个充满安全漏洞的系统,谁会关心安全呢?