【问题标题】:Running a PHP CLI Script from a PHP Application从 PHP 应用程序运行 PHP CLI 脚本
【发布时间】:2012-12-12 05:13:48
【问题描述】:

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

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

当我尝试在终端中运行上述程序时,它执行得很好。一旦用户设置了会话,我需要自动触发它。

path/$cmd 变量打印

当我打印变量 $cmd 时,我得到以下输出,而在终端中给出的以下输出正常。

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

上述命令在终端中运行良好。当我尝试执行/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 中运行上面的代码吗?

【问题讨论】:

  • 那么,如果它没有启动进程,会发生什么?有任何错误、警告或通知吗?确保您已将error_reporting 一路向上。也许您需要指定 php 二进制文件和您尝试调用的脚本的完整路径?
  • 我已经提供了 php 二进制文件的完整路径,我无法设置权限。我没有对我正在使用的服务器的 sudo 访问权限,有没有办法运行上面的代码?
  • @Charles 谢谢,我找到了解决方案。

标签: codeigniter php


【解决方案1】:

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

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

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

上面的方法很神奇。

【讨论】:

  • chmod +x 修复了吗?这很奇怪。据我所知,php 通常只需要读取权限,除非您使用的是 cgi shebang。
  • 文件 NotificationServer.php 必须作为进程运行(我读到这被称为服务器守护进程。不知道它到底是什么意思)所以文件需要可执行权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2011-10-18
相关资源
最近更新 更多