Não é uma coisa de privilégio, é porque o pbcopy e o pbpaste precisam de um servidor de pasteboard (essencialmente, um programa em segundo plano que armazena o pasteboard) e que é executado como parte de uma sessão de login do usuário. O launchd executa o apache em um contexto do sistema, portanto não há nenhum servidor de quadro de distribuição disponível (observe que, embora o apache troque os usuários para o cwd, isso não é o mesmo que ingressar na sua sessão de login).
Pode haver uma maneira de participar de uma sessão de login específica (envolvendo launchctl bsexec
), mas para um serviço da Web isso seria uma má ideia. Primeiro, porque não seria possível ingressar até que você efetuasse login e quebraria assim que você efetuasse o logout; o serviço da web deve ser executado independentemente de quem estiver logado no momento. Segundo, porque isso significaria que seus scripts php compartilham um pasteboard com sua sessão de usuário - você iria copiar algo de um programa para outro e descobrir que estava colando algo do script da Web, não o que você copiou . E a mesma coisa poderia acontecer com o script - ele copia algo, e então recupera algo completamente diferente porque você usou a cópia da GUI. E se várias cópias do roteiro estivessem sendo executadas, elas poderiam pisar umas nas outras ... seria uma bagunça completa. Não tenho certeza do que você está tentando realizar com o pbcopy e o pbpaste, mas tenho certeza de que essa é a maneira errada de fazer isso.