Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Windows上的PEAR目录问题_Php_Windows_Pear - Fatal编程技术网

Php Windows上的PEAR目录问题

Php Windows上的PEAR目录问题,php,windows,pear,Php,Windows,Pear,我已经下载了PHP的ZIP存档文件,并在我的个人资料下解压缩了它。然后我需要一些梨包装go pear.bat显然安装的pear很好,我只需要在之后进入pear.bat文件并将路径调整到php.exe——没什么大不了的,然后它就运行了 但是,当我尝试安装某些东西时,会出现以下错误: 错误:无法访问mkdir C:\php5\pear\data\Console\u CommandLine\data 当然,根目录中不允许写访问,但我有点不知道PEAR认为应该如何在一个既不存在也没有配置的位置安装任何东

我已经下载了PHP的ZIP存档文件,并在我的个人资料下解压缩了它。然后我需要一些梨包装
go pear.bat
显然安装的pear很好,我只需要在之后进入
pear.bat
文件并将路径调整到
php.exe
——没什么大不了的,然后它就运行了

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

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

当然,根目录中不允许写访问,但我有点不知道PEAR认为应该如何在一个既不存在也没有配置的位置安装任何东西。PHP当前驻留在
H:\
下面的某个位置(替换到我的配置文件)。我在PEAR安装过程中输入的所有路径都是正确的,我能找到的唯一位置是
C:\php5
PEAR/go PEAR.phar
和文档中。其中一个是我无论如何都不应该改变的,另一个与程序本身几乎无关

现在,我可能可以进入并创建一个连接点/symlink,指向PHP当前所在的目录,或者实际将其安装在该目录中——这两件事我宁愿避免,因为这最初只是为了对某些东西进行一个小测试

此后,我查看了pear帮助安装,显然我可以使用
-p
-R
来设置一些路径。我还不清楚它们之间的确切区别,但我想试试也无妨。不知怎的,结果是。。。意外:

-p H:\Downloads\php\PEAR
导致了有趣的错误(以及其他错误)

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

虽然
-R
使用相同的路径(显然
-R
指定了下载的存储位置,因为这在我想我不应该碰它之前就起作用了)带来了更多的乐趣:

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

现在我猜
C:\
php5
都是在某个没有明显原因的地方硬编码的(我的环境变量也不包含这种类型的内容),所以我将再次挖掘,这次寻找更短的字符串,从而得到更长的结果列表


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

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

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
是内置的默认目录,但不设置其他目录。

您可以通过

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

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


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

问题是,pear在windows目录中查找其ini文件,因为在那里找不到,所以它会猜测其位置。更糟糕的是,您无法使用
pear config set
更改任何配置设置,因为pear没有可写入的pear.ini。同时,PEAR会忽略其自己目录中现有的PEAR.ini文件。一团糟。看这个

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

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


如果“%PHP\u PEAR\u SYSCONF\u DIR%”设置“PHP\u PEAR\u SYSCONF\u DIR=C:\path\to\PEAR.ini\directory”

是一个略好于以下选项:

  • 打开
    $prefix\pear\pear\Config.php
    ,其中
    $prefix
    是pear安装程序中使用的值。(在我的Windows系统上,
    $prefix
    C:\php\5.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
    程序文件
    和好友自WINDOWS Vista以来就被弃用为应用程序数据目录,并且通常不再可由非升级应用程序写入。(出于安全考虑。)

    如果您的PHP安装是在C:\drive以外的其他地方完成的,那么“pear install”命令可能会抛出错误

    示例:在我的例子中,xampp已安装到E:\drive中,“pear安装”抛出错误

    解决方案: 我进入“pear”目录并检查了为不同pear相关目录设置的配置值。默认情况下,所有驱动器都设置为C:\drive。所以,我们需要将这些设置更改为正确的路径。 在“以管理员身份运行”模式下打开命令提示符

    现在像这样在xampp中更改五条路径

    E:\xampp\php>
    E:\xampp\php>pear config-set doc_dir E:\xampp\php\pear
    
    如果您使用的是C驱动器,并且出现相同的错误,那么上述语句也将保持不变,只需将驱动器名E:\替换为C:\即可,反之亦然。 例如C:drive

    C:\xampp\php>pear config-set doc_dir C:\xampp\php\pear
    
    然后按enter键,它将显示一条消息,消息为“配置设置成功”

    这样,您必须输入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
    
    配置集成功

    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
    
    配置集成功

    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
    
    配置集成功

    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
    
    配置集成功

    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
    

    看起来很有希望,
    config show
    生成了大量指向
    C:\php5\something
    的设置。现在我只需要想一想如何告诉PEAR使用一个合理的位置f