2016-08-13 89 views
1

我試圖從我的PHP腳本傳遞參數給這樣的applescript;如何從php exec傳遞參數到applescript

function runAppleScript(){ 
    exec("osascript processMail.scpt testing testing1"); 
} 

並且像這樣在applescript中接收第一個參數;

on run argv 
    set trimmedQuery to first item of argv 

    tell application "Fake" 
     activate 
     open "Macintosh HD:Users:mini:Documents:fake workflows:login.fakeworkflow" 
     delay 1 
     run workflow with variables {inputAddress:trimmedQuery} 
     wait until done 
     quit 

    end tell 
end run 

但是蘋果腳本沒有運行。如果我取出運行argv並設置第一項,腳本將正常運行。我不知道我做錯了什麼!

+0

不知道,但聽起來hinkey。幾點思考... 1.請記住,GUI應用程序需要以完整的GUI用戶帳戶運行,而Apache/PHP通常作爲更具限制性的非GUI用戶(Web)運行。 2.如果你沒有把腳本的完整路徑傳給osascript,你需要確保在你的'exec()'中設置了正確的工作目錄。 3.你是否已經在終端以普通用戶的身份測試過你的osascript命令,以確保它在那裏正常工作? – foo

+0

您使用的是哪個版本的PHP? – Dekel

回答

0

這是什麼像什麼,我用它來調用帶參數的一個AppleScript文件從PHP腳本:

PHP:

somefile.php: 
#!/bin/php 
<?php 
    $arg1 = $fname; 
    $arg2 = $path; 
    $cmd = "osascript example.applescript \"$arg1\" \"$arg2\""; 
    $returnval = exec($cmd); 

的AppleScript:

example.applescript: 
on run argv 
    set fileNameArg to (item 1 of argv) 
    set pathArg to (item 2 of argv) 
    -- examples: 
    display dialog (item 1 of argv) 
    display dialog (pathArg) 
    if pathArg is in {{}, {""}, ""} then 
    on error 
     set filePath to (choose file name with prompt "Where would you like to save the file?" default name fileNameArg default location pathArg) as string 
    end try 
    end if 
    POSIX path of filePath 
end run