You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下Cron任务无法执行Documents目录中的PHP脚本

解决MacOS下Crontab无法访问Documents目录中PHP脚本的问题

问题原因

这是MacOS的隐私权限限制导致的:Cron进程默认没有被授予访问用户Documents目录的权限,即便脚本路径完全正确,也会触发「Could not open input file」的错误。

解决方案一:给Cron授予完整磁盘访问权限

  1. 打开「系统设置」→「隐私与安全性」→「完整磁盘访问权限」
  2. 点击左下角锁图标,输入密码解锁设置
  3. 点击「+」按钮,在弹出的文件选择窗口中按下Cmd+Shift+G,输入/usr/sbin/cron并回车,选中cron程序添加到权限列表
  4. 重启Mac或执行以下命令重启Cron服务:
sudo launchctl stop com.vix.cron && sudo launchctl start com.vix.cron

解决方案二:改用Launchd替代Crontab

MacOS原生的Launchd工具在权限处理上更友好,适合替代Crontab:

  1. 创建Launch Agent配置文件,路径为~/Library/LaunchAgents/com.dan.script.plist,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.dan.script</string> <!-- 唯一标识,自定义即可 -->
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/bin/php</string> <!-- PHP执行路径 -->
        <string>/Users/dan/documents/script.php</string> <!-- 目标脚本路径 -->
    </array>
    <key>StartInterval</key>
    <integer>60</integer> <!-- 执行间隔(秒),此处为每分钟一次 -->
    <key>StandardOutPath</key>
    <string>/Users/dan/documents/cron.txt</string> <!-- 标准输出日志路径 -->
    <key>StandardErrorPath</key>
    <string>/Users/dan/documents/cron.txt</string> <!-- 错误日志路径 -->
</dict>
</plist>
  1. 加载配置文件启动任务:
launchctl load ~/Library/LaunchAgents/com.dan.script.plist
  1. 若要停止任务,执行:
launchctl unload ~/Library/LaunchAgents/com.dan.script.plist

验证权限问题的方法

可以先在Cron中执行目录列表命令,确认是否为权限问题:

* * * * * ls /Users/dan/documents >> /Users/dan/documents/ls_test.txt 2>&1

如果日志中出现权限相关错误,即可确认是隐私权限限制导致的问题。

内容的提问来源于stack exchange,提问作者Danny Adams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:38:26