代码之家  ›  专栏  ›  技术社区  ›  Joey Gumbo

Windows上的PEAR目录问题

  •  8
  • Joey Gumbo  · 技术社区  · 15 年前

    我已经下载了PHP的ZIP文件,并将其解压缩到我的个人资料下。然后我需要一些梨包。 go-pear.bat 很明显梨装的很好,我只需要进入 pear.bat 然后归档并使路径适应 php.exe 没什么大不了的,然后就跑了。

    但是,当我尝试安装时,会出现以下错误:

    错误:无法mkdir C:\php5\pear\data\Console\CommandLine\data

    自然地,根目录中不允许写访问,但我有点不知所措,知道Paple究竟认为它应该在任何既不存在也不配置任何位置的位置安装任何东西。PHP当前位于下面的某个位置 H:\ (替换为我的个人资料)。在PEAR安装期间,我进入的所有路径都是正常的,是我唯一能找到的地方 C:\php5 是在 PEAR/go-pear.phar 在文件里。其中一个是我无论如何都不应该改变的,我想另一个和程序本身几乎没有关系。

    现在,我也许可以进去 C: \php5 指向PHP当前所在目录的连接/symlink或将其实际安装在该位置,这两件事我宁愿避免,因为这最初只是为了对某些东西进行一点测试。

    后来我调查过 pear help install 显然我可以利用 -P -R 所以设定一些路径。我还不清楚它们之间的确切区别,但我想尝试一下也没什么坏处。结果是。。。意外:

    -P H:\Downloads\php\PEAR 导致了有趣的错误(除其他外)

    错误:无法mkdir C:\Downloads\php\PEAR\php5\PEAR\data\Console\CommandLine\data

    虽然 -右 使用相同的路径(显然 -右 指示下载文件的存储位置,因为在我猜我不应该碰它之前,它已经起作用了)带来了更多的乐趣:

    下载目录“C:\Downloads\php\PEAR\Users\JOHANN~1\AppData\Local\Temp\PEAR\download”不可写。将下载目录配置变量更改为可写目录

    到现在为止我想两者都是 C:\ php5 是一些没有明显原因的硬编码(我的环境变量也不包含那种类型的内容),所以我将再次深入研究,这次寻找较短的字符串,因此更长的结果列表。

    但如果有人同时对此有想法,这可能会有帮助。

    6 回复  |  直到 15 年前
        1
  •  19
  •   hashchange    13 年前

    问题是PEAR在Windows目录中查找它的ini文件,因为它在那里找不到它,所以只能猜测它的位置。更糟的是,您不能用 pear config-set 因为PEAR没有PEAR.ini可写。同时,PEAR忽略了现有的PARI.IN文件在自己的目录中。一团糟。看这个 bug report .

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

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

    IF "%PHP_PEAR_SYSCONF_DIR%"=="" SET "PHP_PEAR_SYSCONF_DIR=C:\path\to\pear.ini\directory"

        2
  •  4
  •   Community Mohan Dere    8 年前

    michael h's answer 可能是:

    1. 正常开放 $prefix\pear\PEAR\Config.php 哪里 $prefix 是PEAR安装程序中使用的值。(在我的Windows系统上, $前缀 C:\php\5.4.0 )

    2. 查找以下部分:

      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);
      }
      
    3. 并进行以下更改:

      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 而且自WindowsVista以来,朋友已经被弃用为应用程序数据目录,并且通常不再可由非提升的应用程序写入。(出于安全考虑。)

        3
  •  2
  •   Álvaro González    15 年前

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

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

    我想 C:\php5 是未设置其他目录时的内置默认目录。

        4
  •  2
  •   cweiske agentofuser    15 年前

    您可以通过

    pear -c /path/to/config/file $command
    
        5
  •  2
  •   Aliaksei Kliuchnikau poncius    13 年前

    我也有同样的问题。我的配置文件在 C:\Windows 目录-go pear安装程序肯定有问题-我指定了不同的 INI 文件位置,但我的愿望还没有实现。

    我抄了 pear.ini C:\windows 一切都开始工作了。

        6
  •  1
  •   Mr. Piyush Ghosh    7 年前

    如果您的PHP安装是在C:\驱动器之外的其他地方完成的,那么pear install命令可能会抛出错误。

    示例:在本例中,xampp已经安装到E:\驱动器中,而“pear install”抛出错误。

    Error got when I run the command. This also happen for PHPDocumentor 解决方案: 我进入pear目录并检查为不同pear相关目录设置的配置值。默认情况下,全部设置为C:\驱动器。所以,我们需要将这些设置更改为正确的路径。 在“以管理员身份运行”模式下打开命令提示符。

    Pear default setting 现在像这样改变xampp中的五条路径

    E:\xampp\php>
    E:\xampp\php>pear config-set doc_dir E:\xampp\php\pear
    

    如果您使用的是C驱动器,并且出现相同的错误,那么上述语句也将保持不变,只需将驱动器名E:\替换为C:\反之亦然。 C:驱动器示例

    C:\xampp\php>pear config-set doc_dir C:\xampp\php\pear
    

    然后按回车键,将显示 配置集成功

    像这样你必须输入5个命令。

    E:\xampp\php>pear config-set doc_dir E:\xampp\php\pear
    

    配置集成功

    E:\xampp\php>pear config-set cfg_dir E:\xampp\php\pear
    

    配置集成功

    E:\xampp\php>pear config-set data_dir E:\xampp\php\pear
    

    配置集成功

    E:\xampp\php>pear config-set test_dir E:\xampp\php\pear
    

    配置集成功

    E:\xampp\php>pear config-set www_dir E:\xampp\php\pear
    

    配置集成功

    Finally installed pear

    推荐文章