2

我已按照步骤从骨架(http://framework.zend.com/manual/2.0/en/user-guide/skeleton-application.html)创建 Zend Framework 2 应用程序

还有一个非常好的 ZF2 本地控制台支持教程 http://framework.zend.com/manual/2.0/en/modules/zend.console.introduction.html

现在教程说:

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

> zf user resetpassword user@mail.com

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

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

有什么提示吗?

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

例如,运行一个名为 module1 的应用程序模块

php appfolder/bin/module1.php --verbose

或者

php appfolder/bin/cli.php module1 --verbose
4

3 回答 3

5

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

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

php.exe public\index.php user resetpassword user@mail.com

调用 zf2 控制台应用程序的 linux 包装器

更改为您的 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
于 2012-11-09T14:50:23.443 回答
1

对于那些有兴趣的人......根据 Michel Feldheim 的回答,我已经稍微改进了它以处理符号链接,并且从哪里运行脚本也无关紧要,因为它总能找到正确的位置。然而,这个确实使用 bash"

#!/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;

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

sh /data/www/someapplication/modules/Application/bin/run

将目录更改为 /data/www/someapplication,然后运行:

php public/index.php <your arguments>
于 2013-03-21T15:07:46.367 回答
-1

一个命令行工具曾经随 ZF1 版本一起提供。可能教程指的是那个。

于 2012-11-09T14:43:19.437 回答