0

我有一个开发服务器,上面有几个虚拟主机。每个人都需要能够运行以下命令: propel-gen ./ creole 该脚本执行一些对数据库进行逆向工程的 php ......但是需要包含它执行的 php 才能这样做。

php.ini 中没有设置 include_path,因为它对所有虚拟主机都是全局的。我需要 include_path 对于每个虚拟主机都是唯一的。

我怎样才能在命令行上进行这项工作?(注意:htaccess 不起作用,因为命令行不通过 apache)。

有没有其他方法可以解决这个问题?也许传递命令行参数来设置包含路径?也许在.bashrc 中设置一些东西?:(

PS - 该脚本在我的 Mac 上运行良好,它有一个硬编码的包含路径

4

1 回答 1

1

从命令行运行 PHP 时,您可以使用-d开关来定义配置选项,这些选项通常在php.ini

有关在 CLI 中运行 PHP 时可以执行的操作的更多信息,您可以查看从命令行使用 PHP

在您的情况下,假设您正在运行它,它只显示当前include_path

$ php -r 'var_dump(get_include_path());'

默认输出是这样的(在我的机器上,顺便说一句):

string(20) ".:/usr/local/lib/php"

现在,使用-dto override include_path,这样:

$ php -dinclude_path='.:/usr/local/lib/php:/var/my/directory/lib' -r 'var_dump(get_include_path());'

你得到:

string(42) ".:/usr/local/lib/php:/var/my/directory/lib"


我承认,这很无聊/打字很长,你有时会忘记这些-dblahblah东西......

所以,你可以定义一个别名,有点像这样:

$ alias myphp='php -dinclude_path=".:/usr/local/lib/php:/var/my/directory/lib"'

现在,如果您使用myphpcommand 而不是php,则无需再指定include_path

$ myphp -r 'var_dump(get_include_path());'
string(42) ".:/usr/local/lib/php:/var/my/directory/lib"

这不会在 shell 会话之间持续存在......所以你可以把alias命令放在你的末尾~/.bashrc,所以每次登录时都会执行它:-)

于 2009-07-29T11:17:34.007 回答