doukun5339 2015-06-05 07:06
浏览 82
已采纳

php5enmod mcrypt with Puppet

Another Puppet related question.

As part of my installation with Puppet, I'm installing: -

  • Ubuntu 14.04.2 LTS
  • PHP5-FPM
  • Nginx
  • MySQL etc

As part of the PHP class I have the following: -

package {[
        'php5-fpm',
        'php5-mysql',
        'php5-cli',
        'php5-mcrypt',
        'php5-curl',
    ]:
    ensure => present,
    require => Exec['apt-get update'],
}

This part works fine. No issues.

Once the server has finished doing its thing, I'm able to run: -

php5enmod mcrypt

This, again, runs without issue and mcrypt is enabled in the php5-fpm installation. The problem is arising with the following code block.

exec { 'enable-mcrypt':
    command => 'php5enmod mcrypt',
    path => '/usr/sbin',
    require => [
        Package['php5-mcrypt'],
        Package['php5-fpm']
    ],
    notify => [
        Service['php5-fpm'],
        Service['nginx'],
    ],
}

I've tried running it in various incarnations, and there are no issues regarding syntax or dependencies for it to execute.

However, when I look through the debug information I'm seeing this: -

Debug: Exec[enable-mcrypt](provider=posix): Executing 'php5enmod pdo'
Debug: Executing 'php5enmod pdo'
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5enmod: 233: /usr/sbin/php5enmod: expr: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5query: 181: /usr/sbin/php5query: expr: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5query: 203: /usr/sbin/php5query: find: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: WARNING:
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: usage: php5enmod [ -s ALL|sapi_name ] module_name [ module_name_2 ]
Error: php5enmod pdo returned 1 instead of one of [0]
Error: /Stage[main]/Php/Exec[enable-mcrypt]/returns: change from notrun to 0 failed: php5enmod pdo returned 1 instead of one of [0]

I cannot make heads nor tails of it. It would almost appear that php5enmod is not seeing the argument that's being passed to it, hence the WARNING: usage php5enmod [ -s ALL|sapi_name ] etc...

I say this because if I run phpenmod without any arguments, that's the same error you get.

If anybody has any ideas, I'd be outrageously thankful.

  • 写回答

2条回答 默认 最新

  • dongluolie3487 2015-06-10 10:45
    关注

    It appears the correct way to do this (As referenced @BMW's comment) is to ensure that Puppet knows where the "find" command is before attempting to execute php5enmod.

    My puppet configuration is below:

    # Ensure Mcrypt is enabled
    exec { "enablemcrypt":
      path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ],
      command => "php5enmod mcrypt",
      notify => Service["apache2"],
      require => Package["php5-common"],
    }
    

    As you can see, by adding "/bin", "/sbin", "/usr/bin" and "/usr/sbin" to the path parameter, puppet can now use the "find" command, which it seems to use internally when executing commands with arguments. php5enmod now runs correctly for me on Ubuntu 14.04 LTS.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 模拟电路求复阻抗和传递函数,请各位拍照写一下解答过程
  • ¥60 不懂得怎么运行下载来的代码
  • ¥15 CST导出3D模型图为什么和软件显示不一样?
  • ¥15 加热反应炉PLC控制系统设计(相关搜索:梯形图)
  • ¥15 python 用Dorc包报错,我的写法和网上教的是一样的但是它显示无效参数,是什么问题
  • ¥15 经过滑动平均后的一维信号还原用什么结构好呢?
  • ¥15 指定IP电脑的访问设置
  • ¥30 matlab ode45 未发现警告,但是运行出错
  • ¥15 为什么devc++编译项目会失败啊
  • ¥15 vscode platformio