【问题标题】:PHP not properly executing bash scriptPHP 没有正确执行 bash 脚本
【发布时间】:2012-10-12 14:55:29
【问题描述】:

我正在创建一个简单的网页,允许用户在基本的 php 页面上选择一个选项,单击提交,然后后端 PHP 应该执行一个 bash 脚本,该脚本将执行一些 AppleScript。

我可以从终端运行 bash 脚本,它可以使用 osascript 很好地运行 Applescript 文件,但是当我尝试从 php 执行 bash 脚本时,它会运行 echo 命令,但不会执行 osascript 行。我想这是一个权限问题,但我使用 chmod 777 将所有内容更改为完全权限(诚然不是最好的主意,但除此之外)

我有什么遗漏吗?奇怪的是,它似乎完全跳过了osascript 行。有什么建议?提前致谢!

代码:

PHP

<?php
if (isset($_POST['submit'])) {
    $username =  $_POST['username'];
    if (strcasecmp($username, 'user1') == 0) {
        echo 'test1';
    } else if (strcasecmp($username, 'user2') == 0) {
        echo 'test2';
    } else if (strcasecmp($username, 'user3') == 0) {
        echo 'test3';
    } else if (strcasecmp($username, 'user4') == 0) {
        shell_exec('cd ~/Sites;./a.out');
    }
}
?>

重击

#!/bin/bash
echo "test String"
cd /Users/Zimmerman/Library/Scripts
osascript /Users/Zimmerman/Library/Scripts/testscript.scpt
echo "test String"

【问题讨论】:

  • 你的代码是什么样的?

标签: php macos bash applescript osascript


【解决方案1】:

您的 apache $PATH 变量可能不在 /usr/bin/ 内。如果您在 PHP 文件中回显 shell_exec('which osascript');,您可能看不到任何内容,但您会在终端上看到结果。

您可以将路径添加到您的网络服务器 $PATH 变量,或者您可以尝试在脚本上使用可执行文件 /usr/bin/osascript 的完整路径。

【讨论】:

  • 你说得对,我在使用shell_exec('which osascript') 时看不到它我对 webserver/apache 的东西不太好,我怎么能简单地做到这一点。谢谢!
  • 在您的 shell 脚本中,您是否尝试将 osascript 替换为 /usr/bin/osascript 以使其具有完整路径?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
  • 2012-02-07
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多