I am trying to get a PHP script to execute an Applescript which opens an application.*
PHP is running under the _www user. And while it can execute Applescripts with the osascriptcommand, it can't run my Applescript program, because _wwwhas no desktop environment.
So I thought: I'll just use sudo to run the AppleScript under my user. I used visudo to add an entry for _www which would allow it run my script without a password (sudo -u myUser ...). This worked great! sudo switched the user to me and ran most commands without a hitch. Except I still didn't have a desktop environment! I could run shell-only commands; whoami returned my username, not _www. But AppleScript failed to work. I had switched the user, but had not switched into a desktop environment.
So, my question: is there a way that PHP can execute programs in another user's desktop environment? I suspect not...
As an alternative, I thought I might establish a local-socket link between my PHP program (running as _www) and another program running under my user. The latter program will listen on the socket until PHP sends a message. Perhaps I'll do this if the above doesn't work.
*In the interest of full transparency, what I'm actually trying to do: I want to send an iMessage to myself. Apple being Apple, the only way of programmatically send iMessages is through AppleScript-ing the Messages app. Messy, but it works.
If there is no way to do either of the above, I'll just use SMS and forget iMessage.