我有一个应该启动屏幕保护程序的程序:
<?php
$cmd='automator /Users/myusername/Library/Services/Start_Screensaver.workflow';
shell_exec($cmd);
?>
当我用
php index.php
它工作正常,但是当我尝试从浏览器运行它时,我总是在apache error_log文件中得到以下错误:
The workflow file does not exist.
我觉得这很奇怪,因为我确实有从根文件夹开始的正确路径。任何帮助,将不胜感激。谢谢!
另外,尽管我非常确定apache在我的mac上已正确设置,但我只能通过mac本身上的mac的ip adres访问网页。因此,例如,当我在手机上访问Mac的IP时,它无法加载页面,但是当我访问Raspberry Pi的IP地址(也运行apache)时,它可以正常工作。
编辑:明确地说,这不是在Mac上启动屏幕保护程序,而是从Tasker内的手机远程启动屏幕保护程序。
编辑:我把自动化工作流文件放在同一目录中,并做了
sudo chmod 777 start_screensaver.workflow
现在出现以下错误:
2015-12-24 19:12:26.376 automator[2313:462937] Not loading action at /Library/Automator/Create Table from Data in Workbook.action: No bundleIdentifier.
2015-12-24 19:12:26.377 automator[2313:462937] Not loading action at /Library/Automator/Save Outlook Messages as Files.action: No bundleIdentifier.
2015-12-24 19:12:26.677 automator[2313:462937] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
2015-12-24 19:12:26.678 automator[2313:462937] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
2015-12-24 19:12:26.679 automator[2313:462937] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
2015-12-24 19:12:26.680 automator[2313:462937] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
2015-12-24 19:12:27.692 Automator Runner[2314:462973] Not loading action at /Library/Automator/Create Table from Data in Workbook.action: No bundleIdentifier.
2015-12-24 19:12:27.692 Automator Runner[2314:462973] Not loading action at /Library/Automator/Save Outlook Messages as Files.action: No bundleIdentifier.
2015-12-24 19:12:27.757 Automator Runner[2314:462973] Script Monitor is missing or damaged: Error Domain=NSCocoaErrorDomain Code=256 "The application “ScriptMonitor” could not be launched because a miscellaneous error occurred (OSStatus -10810)." UserInfo={NSURL=file:///System/Library/CoreServices/ScriptMonitor.app/, NSLocalizedDescription=The application “ScriptMonitor” could not be launched because a miscellaneous error occurred (OSStatus -10810)., NSUnderlyingError=0x7f80f3411190 {Error Domain=NSOSStatusErrorDomain Code=-10810 "kLSUnknownErr: Unexpected internal error"}}
2015-12-24 19:12:27.758 Automator Runner[2314:462973] Script Monitor is missing or damaged
2015-12-24 19:12:27.843 Automator Runner[2314:462973] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
2015-12-24 19:12:27.844 Automator Runner[2314:462973] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
2015-12-24 19:12:27.844 Automator Runner[2314:462973] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
2015-12-24 19:12:27.846 Automator Runner[2314:462973] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
2015-12-24 19:12:27.872 Automator Runner[2314:462980] warning: failed to get scripting definition from /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app; it may not be scriptable.
2015-12-24 19:12:27.966 Automator Runner[2314:462980] Scripting Bridge could not launch application /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app.
2015-12-24 19:12:27.997 Automator Runner[2314:462973] Error writing cache to /Library/WebServer/Library/Caches/com.apple.automator.actionCache-user-standardLocations.plist: The folder “com.apple.automator.actionCache-user-standardLocations.plist” doesn’t exist.
2015-12-24 19:12:30.830 Automator Runner[2314:462973] Error writing cache to /Library/WebServer/Library/Caches/com.apple.automator.actionCache-system-standardLocations.plist: The folder “com.apple.automator.actionCache-system-standardLocations.plist” doesn’t exist.
2015-12-24 19:12:31.148 Automator Runner[2314:462973] Error writing cache to /Library/WebServer/Library/Caches/com.apple.automator.actionCache-bundleLocations.plist: The folder “com.apple.automator.actionCache-bundleLocations.plist” doesn’t exist.
看来您的Apache用户无权访问该目录。当您从cli运行php脚本时,您以的身份运行它们myusername
,但是一旦从浏览器中打开它,它便是另一个用户(_www
)。
因此,您需要确保_www
用户可以访问该文件。777
为该文件设置权限可能会起作用。
PS:btw @Mike绝对正确,您应该重新考虑使用脚本的方式。
屏幕保护程序启动,这很酷。因此,问题只与权限有关。因此,您可以尝试使用php内置服务器运行它
php -S localhost:8000 index.php
或配置apache并更改apache用户。
另外,您也可以将所有与屏幕保护程序有关的内容移动到可公开访问的目录中,但这又可能会导致一些安全漏洞。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句