【问题标题】:Call osascript through php shell_exec doesn't work通过 php shell_exec 调用 osascript 不起作用
【发布时间】:2012-12-25 10:06:03
【问题描述】:

当我遇到这个问题时,我正在尝试使用 osascript 做一些事情。

这是我的测试:

/usr/bin/osascript <<-EOF

    tell application "System Events"
        activate
        display dialog "Hello world"
    end tell

EOF

这是我的 PHP 文件。

<?php
$output = shell_exec("./test");
echo "<pre>$output</pre>";
?>

您知道为什么这不起作用吗? (这不是很重要,但我只是好奇)

【问题讨论】:

  • 呃,所以不要让我们悬念!你得到什么输出
  • 尝试shell_exec("/path/to/test 2&gt;&amp;1") 将错误输出重定向到标准输出。此外,为了安全起见,请切换到如图所示的完整路径。
  • 46:54: execution error: An error of type -10810 has occurred. (-10810)
  • 啊哈!那么,如果你从控制台运行这个文件,它会正确执行吗?
  • ./test 执行没有问题。这是我尝试的第一件事!

标签: php shell-exec osascript


【解决方案1】:

我怀疑 osascript 可执行文件需要设置环境变量才能正常工作,这就是为什么从控制台可以正常工作的原因。请参阅 this answer 向您展示如何从 PHP 进行设置。

在我的例子中,它是 HOME 变量,但它可能是别的东西。继续添加它们直到它起作用!

【讨论】:

  • 好吧。似乎错误 10810 是因为我要求系统打开弹出窗口,但系统不需要,除非您从应用程序中执行此操作。我可以使用不需要 GUI 元素的system()shell_exec() 直接调用脚本
  • 对。是的,我不希望任何弹出对话框的东西在 web 进程中通过 PHP 工作。
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多