我不知道这里的交易是什么......
所以我想运行一个AppleScript: sudo osascript myscript.scpt
这在终端中工作正常,但是当我通过PHP执行时却没有exec(); 什么都没发生.控制台说
no tty present and no askpass program specified ; TTY=unknown ; …
Run Code Online (Sandbox Code Playgroud)
我做了我的研究,似乎我错过了sudo命令的密码.我尝试了几种不同的方法来解决这个问题,包括:
%admin ALL=(ALL) ALL在/etc/sudoersproc_open()不是exec()似乎没有一个工作,因此驱使我CrAzY!
基本上,是否有一种明确的方式让PHP执行简单的终端命令?
编辑:澄清,myscript.scpt是一个简单的AppleScript,它改变了屏幕上的UI(对于一个更大的项目).从理论上讲,osascript myscript.scpt应该足够了,但是sudo出于某种原因需要从系统中调用一些响应.如果sudo可以以某种方式消除,我不认为我会有这个权限问题.
post-merge我的git存储库中有一个挂钩,它只运行jekyll命令.
当我跑步时git pull,post-merge跑步没有问题.
但是,我已经设置了一个PHP文件,它将充当远程的WebHook:
$pull = `cd .. && git pull`;
echo $pull;
Run Code Online (Sandbox Code Playgroud)
当我访问此文件时,git pull运行(在一些初始问题之后)并且成功.但是,由于某种原因post-merge失败了.如果我查看我的Apache内部error_log,我发现以下错误:
.git/hooks/post-merge: line 5: jekyll: command not found
考虑到post-merge当我git pull通过SSH 做手册时成功运行jekyll ,这很奇怪.
如果我运行使用这里建议的可执行文件的完整路径,我在我的错误中收到此错误error_log:
/usr/bin/env: ruby_noexec_wrapper: No such file or directory
我通过RVM安装了Ruby.
如何让apache用户运行jekyll没有问题?
编辑:这是我目前的post-merge:
#!/bin/sh
unset GIT_DIR
source /usr/local/rvm/environments/ruby-1.9.3-p194
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/jekyll
echo "Deployed!"
Run Code Online (Sandbox Code Playgroud)
当我以apache用户身份运行时,我现在收到此错误:

Node.js已安装.