无法使用php exec()执行PHP脚本(在magento中)

时间:2011-09-17 14:37:58

标签: php magento exec

我想在后台进程中启动一些php脚本。为此我在班上有一个特殊的方法

protected function _runSpider()
{
    $php = exec('which php');
    $result = exec($php . ' ' . Mage::getBaseDir() . '/spider.php > ' . Mage::getBaseDir() . '/var/log/out.log 2>&1 &');
    Mage::log($result);
}

这应该执行类似这样的事情

/usr/bin/php /home/www/spider.php > home/www/var/log/out.log 2>&1 &

但结果是因为我认为脚本没有执行,magento日志为空,out.log文件为空。

1 个答案:

答案 0 :(得分:1)

也许

protected function _runSpider()
    {
        $command = '$(which php) ' . Mage::getBaseDir() . '/spider.php > ' . Mage::getBaseDir() . '/var/log/out.log');
        $result = exec($command);
        Mage::log($result);
    } 

删除最后一个&将锁定脚本的执行,而不是将控制权传递回解释器。由于您将所有输出传递给文件,因此您可能不需要将输出传递给null

顺便说一句,您挂载的shell命令不会返回任何数据,因为您将所有内容传递给文件或/ dev / null。如果您需要它返回$result var,请删除代码的> filename部分,但exec只会give you the last line of the result,您可能需要passthru()函数或添加{ {1}} var将每一行存储到$output函数的数组中。