在 macOS 上,有一个名为“pbcopy”的终端实用程序,可将文本复制到剪贴板。pbcopy < file 将 'file' 的内容复制到剪贴板。但是从 PHP(在 Apache 下运行,macOS 中包含的标准 PHP 和 Apache)它不起作用。唯一的区别是我将 Apache 用户更改为我的用户名,而不是标准的 _www 或 www-data,以便于更改我的开发网络服务器(即我的 Macbook Pro)上的文件。我在 Catalina 15.3 下运行 Apache 2.4.33 和 PHP 7.3.11。
system("pbcopy < /Users/me/.profile");
从 PHP 不做任何事情,也不会发出任何错误。
system("pbcopy < /Users/me/.profile 2>&1");
在 PHP 中显示 stderr 错误。
从终端运行时
/usr/bin/php -r 'system("pbcopy < /Users/me/.profile");'
它确实有效:我的 .profile 的内容被复制到剪贴板中。我在 Settings => Security & Privacy => Accessibility 下授予了 /usr/sbin/httpd 可访问性访问权限以允许剪贴板访问。
为什么这在 Apache 下不起作用?