0

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

我可以从终端运行 bash 脚本,它可以很好地运行 Applescript 文件,osascript但是当我尝试从 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"
4

1 回答 1

0

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

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

于 2012-10-22T18:43:31.357 回答