Я пытаюсь получить сценарий PHP для выполнения Applescript, который открывает приложение.*

PHP работает под пользователем _www . И хотя он может выполнять Applescripts с помощью команды osascript , он не может запустить мою программу Applescript, потому что в _www нет среды рабочего стола .

Поэтому я подумал: я просто буду использовать sudo для запуска AppleScript под моим пользователем. Я использовал visudo для добавления записи для _www которая позволяла бы запускать мой скрипт без пароля (sudo -u myUser ...). Это сработало отлично! sudo переключил пользователя на меня и выполнил большинство команд без помех. За исключением того, что у меня до сих пор не было рабочего стола! Я мог запускать команды только для оболочки; whoami вернул мое имя пользователя, а не _www . Но AppleScript не работал. Я переключил пользователя, но не переключился в среду рабочего стола.

Итак, мой вопрос: есть ли способ, которым PHP может выполнять программы в среде рабочего стола другого пользователя? Я подозреваю, что нет ...


В качестве альтернативы я подумал, что мог бы установить локальный сокет-соединение между моей PHP-программой (запущенной как _www) и другой программой, работающей под моим пользователем. Последняя программа будет прослушивать сокет, пока PHP не отправит сообщение. Возможно, я сделаю это, если вышеперечисленное не сработает.


* В интересах полной прозрачности то, что я на самом деле пытаюсь сделать: я хочу отправить iMessage себе. Apple, будучи Apple, единственный способ программно отправлять iMessages - через приложение AppleScript для сообщений. Грязно, но это работает.

Если нет способа сделать что-либо из вышеперечисленного, я просто использую SMS и забуду iMessage.

0