2012-12-12 63 views
1

我有一个php文件,需要在我的Php应用程序中运行CodeIgniter框架的CLI中执行。我尝试了exec和shell_exec命令,似乎没有启动该进程。请找到我尝试执行的代码。从PHP应用程序运行PHP CLI脚本

$phpPath = exec('which php'); 
$cmd = $phpPath.' '.dirname(__DIR__).'/API/notification/NotificationServer.php'; 
echo "<pre>".shell_exec($cmd)."</pre>"; 

当我尝试运行上面的终端它执行罚款。一旦用户设置了会话,我需要自动触发该事件。

的路径/ $ CMD可变打印

当我打印变量$ CMD我得到下面的输出

,并在下面给出终端时工作正常。

/usr/bin/php /Users/lalithb/Desktop/Android/AndroidWS/API/notification/NotificationServer.php 

上面的命令在终端工作正常。当我尝试exec/shell_exec它,它不工作。

APACHE_ERROR日志:

sh: line 1: 2437 Trace/BPT trap: 5  /usr/bin/php 
sh: line 1: /Users/lalithb/Desktop/Android/AndroidWS/API/notification/NotificationServer.php: Permission denied 

有人可以帮我在运行在CLI这上面的代码?

+0

因此,如果它不启动该过程,会发生什么?任何错误,警告或通知?确保你一直在启动'error_reporting'。也许你需要指定'php'二进制文件和你试图调用的脚本的完整路径和完整路径? – Charles

+0

我已经提供了php二进制文件的完整路径,我无法设置权限。我没有sudo访问我正在使用的服务器,有没有办法运行上面的代码? –

+0

@Charles谢谢,我找到了解决方案。 –

回答

0

我解决了这个问题,猜猜会有像我这样的其他人试图访问受限制的文件夹。我发现这里的解决方案

http://ubuntuforums.org/showthread.php?t=1302259

exec('chmod +x'.dirname(__DIR__).'/API/notification/NotificationServer.php); 

上述工作的法宝。

+0

'chmod + x'修好了吗?这很奇怪。据我所知,PHP通常只需要读取权限,除非你使用cgi shebang。 – goat

+0

NotificationServer.php文件必须作为一个进程运行(我读取这被称为服务器守护进程,不知道到底是什么意思),所以文件需要可执行权限。 –