1

我在办公室的 Windows7+XAMPP 环境中使用 Zend Framework;即使我想改变这一点,我也无法改变,所以我需要适应。所以,我自然而然地安装了 Cygwin 和 Console2,以便在更像 Linux 的环境中工作。PHP 和 MySQL 路径在 Windows 的环境变量中,所以如果我在 CMD 中这样做:

php --version
PHP 5.4.4 (cli) (built: Jun 13 2012 21:27:06)

有回应。如果我在 Cygwig 环境中做同样的事情,我也会得到响应,所以 Cygwin 可以找到 PHP 路径。关于 Zend Framework,我下载了 zip 文件并将 ZF bin 目录的内容解压缩到C:\xampp\php(即 zf.sh、zf.bat 和 zf.php)以及所有库文件夹内容,C:\xampp\php\pear\Zend因此它们位于正确的路径中用过的。

在 Windows CMD 中,我设法以这种方式创建了类似于别名的东西:

#cmd_aliases.txt
zf=php C:\xampp\php\zf.php $*

#cmd_autorun.cmd
@echo off
cls
doskey /macrofile=C:\Users\hector.ayala\Documents\cmd_aliases.txt

#cmd_autorun_install.cmd
reg add "hkcu\software\microsoft\command processor" /v Autorun /t reg_sz /d C:\cmd_autorun.cmd

现在在 CMD 中我可以这样做:

>zf show version
Zend Framework Version: 1.11.12

...如预期。但是我不能在 CygWin 中做类似的事情......我在 Cygwin 中做了这个: $ cd ZendFramework-XX $ mv bin/* /usr/local/bin $ chmod +x /usr/local/bin/zf.sh $ ln -s /usr/local/bin/zf.sh /usr/local/bin/zf

这意味着我做了一个符号链接,zf.sh以便仅使用zf. 但是我得到了这个:

$ zf show version
Could not open input file: /usr/local/bin/zf.php

然后我说,哦,好吧!也许是 ZF 的问题......我的 PHP 将它的版本返回给我,所以 PHP 可以工作,当然任何 php 文件的扭结都可以工作:

$ php simple_test.php
Could not open input file: simple_test.php

什么……?为什么 PHP 可以工作,但同时却不能?有什么想法可以zf像使用 CMD 一样使用简单的自定义调用 Zend Framekork CLI 吗?

4

1 回答 1

1

我找到方法了!!!!我不知道cygpath它是一个命令行实用程序,用于在 Windows 和 POSIX 路径之间进行转换。因为 Windows 无法理解路径,zf.sh无法处理它,因此我可以获得 PHP 版本,但 PHP 无法理解文件的路径以使用它们,因此出现Could not open input file错误。所以 PHP 需要的只是理解路径。

所以阅读cygpath给定链接中的帮助,我能够理解这个命令并使官方适应zf.sh我的需要。所以我把它改成了最后一行:

"$PHP_BIN" -d safe_mode=Off -f "$PHP_DIR/zf.php" -- "$@"

对此:

"$PHP_BIN" -d safe_mode=Off -f "$(cygpath -aw $PHP_DIR/zf.php)" -- "$@"

现在它起作用了!

$ zf show version
Zend Framework Version: 1.11.12

希望有人会发现这很有用;)

于 2012-09-06T21:56:50.317 回答