微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows上的PEAR目录问题

我已经下载了PHP的ZIP压缩文件并将其解压到我的configuration文件中。 然后我需要一些PEAR包。 go-pear.bat显然安装了PEAR就好了,之后我只需要进入pear.bat文件,然后修改PHP.exe的path – 没什么大不了的,之后就运行了。

但是,当我尝试安装的东西,我得到以下错误

错误:未能mkdir C: PHP5 pear data Console_CommandLine data

当然,在根目录下不允许写访问权限,但是我知道PEAR认为它应该在任何地方既不存在也不configuration的地方安装任何东西。 PHP目前驻留在H: (代替我的个人资料)的某个地方。 我在PEAR安装期间input的所有path都是理智的,唯一可以find的地方是C:PHP5 ,位于PEAR/go-pear.phar和文档中。 其中之一是我不应该改变的东西,我猜想,另一件事情是与程序本身几乎没有关系。

PHP:PEAR在Windows上尝试打开c: windows pear.ini进行写入,即使configuration文件是c: pear pear.ini

显示不同版本号的窗口上的梨

麻烦在Windows 7上安装PHPunit,wamp服务器

为什么$ pear-> packageExists()在已安装的包上总是返回false?

无法通过PEAR安装PHPUnit,需要PEAR安装程序> = 1.9.2,无法从1.9.0升级PEAR

现在,我可能会进入并使C:PHP5成为一个连接C:PHP5 /符号链接PHP所在的目录,或者实际上将它安装在该位置 – 这两个我宁愿避免的事情,因为这最初只是为了一点一些东西。

我自从看着pear help install ,显然我可以使用-P或-R所以设置一些path。 这两者之间的确切区别对我来说还不是很清楚,但我猜,尝试它们不会有什么坏处。 不知何故,结果是……意外的:

-PH:DownloadsPHPPEAR导致了有趣的错误(等)

错误:mkdir失败C: Downloads PHP PEAR PHP5 pear data Console_CommandLine data

而-R使用相同的path(显然-R指明下载的存储位置,因为这工作之前,我想我不应该触摸这个)导致更有趣:

下载目录“C: Downloads PHP PEAR Users JOHANN〜1 AppData Local Temp pear download”是不可写的。 将download_dirconfigurationvariables更改为可写的目录

现在我猜想C:和PHP5都是硬编码的地方,没有明显的原因(我的环境variables也没有包含这种types),所以我会再次挖掘,这次查找更短的string,因此更长的结果列表。

但是如果有人对此有所了解,这可能会有所帮助。

在wampserver上安装PEAR

可能的符号链接攻击

没有find梨数据库

将PEAR包的本地版本指向开发path?

PHPUnit,PEAR升级错误

问题是,PEAR在Windows目录中查找它的ini文件,并且因为它没有在那里找到它,所以它猜测该位置。 更糟糕的是,你不能用pear config-set来更改任何配置设置,因为PEAR没有pear.ini来写入。 同时,PEAR将忽略其自己目录中的现有pear.ini文件。 一团糟。 看到这个错误报告 。

如果只有一个全局PEAR安装,可以通过创建指向正确目录的环境变量PHP_PEAR_SYSCONF_DIR来告知PEAR在哪里查找ini文件

但是,如果有多个本地PEAR安装,则必须添加以下行来修补pear.bat:

IF "%PHP_PEAR_SYSCONF_DIR%"=="" SET "PHP_PEAR_SYSCONF_DIR=C:pathtopear.inidirectory"

比迈克尔·H的答案稍微好一些的选择可能是:

打开$prefixpearPEARConfig.PHP ,其中$prefix是在PEAR安装程序中使用的值。 (在我的Windows系统上, $prefix是C:PHP5.4.0 )

找到下面的部分:

if (getenv('PHP_PEAR_SYSCONF_DIR')) { define('PEAR_CONfig_SYSconfdIR',getenv('PHP_PEAR_SYSCONF_DIR')); } elseif (getenv('SystemRoot')) { define('PEAR_CONfig_SYSconfdIR',getenv('SystemRoot')); } else { define('PEAR_CONfig_SYSconfdIR',PHP_SYSconfdIR); }

并进行以下更改:

if (getenv('PHP_PEAR_SYSCONF_DIR')) { define('PEAR_CONfig_SYSconfdIR',getenv('PHP_PEAR_SYSCONF_DIR')); //} elseif (getenv('SystemRoot')) { //define('PEAR_CONfig_SYSconfdIR',getenv('SystemRoot')); } else { //define('PEAR_CONfig_SYSconfdIR',PHP_SYSconfdIR); // This next line is new define('PEAR_CONfig_SYSconfdIR',$PEAR_INSTALL_DIR); }

在处理多个PHP / PEAR版本/安装时,这个解决方案的风险较小,特别是在同时运行多个PHP / PEAR版本/安装时,避免环境破坏。

很明显,PEAR开发者忽略了WINDOWS , Program Files和朋友自Windows Vista以来已被弃用为应用程序数据目录的事实,而且通常不再可由非高级应用程序写入。 (出于安全原因。)

查看PEAR命令的config-...参数:

config-create Create a Default configuration file config-get Show One Setting config-help Show @R_971_4045@ion About Setting config-set Change Setting config-show Show All Settings

我认为C:PHP5是内置的认目录,当你不设置另一个

你可以通过指定配置文件

pear -c /path/to/config/file $command

我有同样的问题。 我的配置文件从C:Windows目录中丢失 – 肯定有错误的安装程序 – 我指定了一个不同的INI文件位置,但我的愿望并没有实现。

我将pear.ini复制到C:windows ,一切开始工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐