Zend framework2 Zend框架控制台应用程序

Zend framework2 Zend框架控制台应用程序,zend-framework2,php,Zend Framework2,Php,我已经按照步骤从框架()创建了Zend Framework 2应用程序 还有一个关于ZF2本机控制台支持的非常好的教程 现在,教程说: 假设我们希望我们的应用程序能够处理以下内容 命令行: 当用户使用这些参数运行我们的应用程序(zf)时,我们希望 调用操作resetpassword of Application\IndexController 问题是,没有关于如何在控制台(当前为windows)上运行脚本的描述-在创建的文件夹结构中没有zf或任何其他可执行脚本 有什么提示吗 理想情况下,应该是

我已经按照步骤从框架()创建了Zend Framework 2应用程序

还有一个关于ZF2本机控制台支持的非常好的教程

现在,教程说:

假设我们希望我们的应用程序能够处理以下内容 命令行:

当用户使用这些参数运行我们的应用程序(zf)时,我们希望 调用操作resetpassword of Application\IndexController

问题是,没有关于如何在控制台(当前为windows)上运行脚本的描述-在创建的文件夹结构中没有zf或任何其他可执行脚本

有什么提示吗

理想情况下,应该是应用程序根目录中的bin文件夹,其中包含每个应用程序模块的入口脚本

e、 g.运行名为module1的应用程序模块

php appfolder/bin/module1.php --verbose


ZF1版本附带的命令行工具。可能教程中提到了这一点。

我找到了解决方案。 与基于web的ZF2应用程序一样,入口点是appfolder/public中的index.php

上面教程中的示例应用程序就是这样命名的

php.exe public\index.php user resetpassword user@mail.com
linux包装器调用zf2控制台应用程序 更改为ZF2应用程序文件夹

mkdir bin    
touch bin/app
chmod +x bin/app
将此文件放入你的应用程序文件中

#!/bin/sh
PHP_BIN=`which php`
WDIR=`dirname ${0}"`
if test -x "${PHP_BIN}"; then
    cd "${WDIR}"
    "${PHP_BIN}" "../public/index.php" "${@}"
    exit "${?}"
fi
echo "php binary not found, please install php-cli"
exit 1;
现在你应该可以这样运行你的应用了

app user resetpassword user@mail.com

对于那些感兴趣的人。。。基于Michel Feldheim的回答,我对其进行了轻微改进,以处理符号链接,而且无论从何处运行脚本,它都会找到正确的位置。但是,这一个确实使用bash“

在上面的示例中,$scriptDir是您正在运行的实际脚本所在的位置。rootDir应该是您的应用程序的基本目录。因此,假设应用程序位于/data/www/someapplication下,并且此应用程序包含一个文件名为run的modules/application/bin文件夹。从运行的linux路径(/)开始:

sh /data/www/someapplication/modules/Application/bin/run
将目录更改为/data/www/someapplication,然后运行:

php public/index.php <your arguments>
php public/index.php

在linux中,您可以使用
app.php
,其中第一行是shebang
#!/usr/bin/env php
。然后您只需使用
$bin/app.php用户重置密码运行它user@mail.com
#!/bin/bash
PHP_BIN=`which php`
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
scriptDir="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
rootDir="$( cd -P "$( dirname "$scriptDir/../../../../" )" && pwd )"
if test -x "${PHP_BIN}"; then
    cd $rootDir
    "${PHP_BIN}" "public/index.php" "${@}"
    exit "${?}"
fi
echo "php binary not found, please install php-cli"
exit 1;
sh /data/www/someapplication/modules/Application/bin/run
php public/index.php <your arguments>