我使用phpbb3操作论坛。此版本的论坛附带一个名为" phpbbcli.php"的CLI工具。 CLI基于symfony / console组件。
我想使用此CLI工具从另一段PHP代码中以编程方式添加用户。此代码通过apache / mod_php调用执行。 (用户在网站上进行注册)。
我需要调用的命令如下所示:
/usr/bin/php /var/www/forum/bin/phpbbcli.php user:add --username=test-user --password=test-password --email=mail@example.com
如果我在服务器的shell上运行此命令,则会按预期创建用户。
由于我想从另一个PHP脚本中调用此命令,我执行了以下操作:
echo shell_exec('/usr/bin/php /var/www/forum/bin/phpbbcli.php user:add --username=test-user --password=test-password --email=mail@example.com');
但这次执行并不成功。相反,我收到错误消息,即用户名,密码以及电子邮件地址"太短"。所以脚本确实被执行了,但是参数"迷失了#34;不知。
[ERROR] The username you entered is too short.
The password you entered is too short.
The email address you entered is too short.
我已经调试了symfony / console组件。参数存在于控制台应用程序中。但是这些论点没有得到解析。这应该发生在方法" Command :: interact"。
中当我在shell中执行CLI时,方法"交互"确实被召唤了。从我的PHP脚本中执行相同的方法"交互"不被称为。
生产服务器(Ubuntu 14.04)以及开发环境(Ubuntu 14.04 / vagrant)中出现问题。
我发现没有理由发生这种情况。