关于php:让PEAR在XAMPP上工作(Windows上的Apache / MySQL堆栈)

关于php:让PEAR在XAMPP上工作(Windows上的Apache / MySQL堆栈)

Getting PEAR to work on XAMPP (Apache/MySQL stack on Windows)

我正在按照提供的说明,使用XAMPP在Windows开发服务器上安装Laconica,这是一个开放源代码微博应用程序。

该网站找不到PEAR,并引发以下错误:

Warning: require_once(PEAR.php) [function.require-once]: failed to open stream: No such file or directory in C:\\xampplite\\htdocs\\laconica\\lib\\common.php on line 31

Fatal error: require_once() [function.require]: Failed opening required 'PEAR.php' (include_path='.;\\xampplite\\php\\pear\\PEAR') in C:\\xampplite\\htdocs\\laconica\\lib\\common.php on line 31

  • PEAR位于C:\\xampplite\\php\\pear
  • phpinfo()向我显示包含路径为.;\\xampplite\\php\\pear
  • 我究竟做错了什么? 为什么不包含PEAR文件夹?


    您需要修复您的include_path系统变量以指向正确的位置。

    要修复它,请编辑php.ini文件。在该文件中,您将找到一行" include_path = ..."。 (您可以通过在页面上运行phpinfo()来查找php.ini的位置。)修复行中显示" \\xampplite\\php\\pear\\PEAR"的部分以读取" C:\\xampplite\\php\\pear"。确保在行之前和/或之后保留分号。

    重新启动PHP,您应该一切顺利。要在IIS中重新启动PHP,您可以重新启动分配给站点的应用程序池,或者更好的是一起重新启动IIS。


    如果您使用的是便携式XAMPP安装和Windows 7,并且像我一样,则从控制面板中删除了XAMPP shell之后,便有了该版本,此处没有建议的答案将对您有好处,因为这些软件包将不会安装。

    问题出在配置文件上。经过大量的尝试和错误后,我发现正确的设置。

    只需在\ xampp \ php目录中拉出一个命令窗口并运行

    1
    2
    3
    4
    5
    pear config-set doc_dir :\\xampp\\php\\docs\\PEAR
    pear config-set cfg_dir :\\xampp\\php\\cfg
    pear config-set data_dir :\\xampp\\php\\data\\PEAR
    pear config-set test_dir :\\xampp\\php\\tests
    pear config-set www_dir :\\xampp\\php\\www

    您将要用便携式驱动器当前正在运行的实际驱动器号替换":"。不幸的是,只要此驱动器号发生变化,都需要执行此操作,但是它确实安装了我需要的模块。


    我首先尝试了所有其他答案,但它们似乎都不起作用,因此我在梨配置文件中静态设置了梨路径。

    C:\ xampp \ php \ pear \ Config.php

    找到此代码:

    1
    2
    3
    4
    5
    6
    if (!defined('PEAR_INSTALL_DIR') || !PEAR_INSTALL_DIR) {
        $PEAR_INSTALL_DIR = PHP_LIBDIR . DIRECTORY_SEPARATOR . 'pear';
    }
    else {
        $PEAR_INSTALL_DIR = PEAR_INSTALL_DIR;
    }

    并替换为:

    1
    $PEAR_INSTALL_DIR ="C:\\\\xampp\\\\php\\\\pear";

    我重新启动了apache并使用了以下命令:

    1
    pear config-all

    确保所有路径不再以C:\ php \ pear开头


    在Windows上,请使用Xampp Shell(XAMPP控制面板中有一个" Shell"按钮)

    然后

    1
    cd php\\pear

    转到" C:\ xampp \ php \ pear"

    然后输入

    1
    pear

    以每1点为例,您的PEAR路径为c:\ xampplite \ php \ pear \

    但是,您的路径指向\ xampplite \ php \ pear \ PEAR

    将两个放在另一个之上,您可以清楚地看到一个太长:

    c:\ xampplite \ php \ pear \

    \ xampplite \ php \ pear \ PEAR

    您的包含路径设置为将一个梨子深入梨树。 pear文件夹的PEAR子文件夹包含PEAR组件。您需要将包含路径上调一级。

    (您不需要c:顺便说一句,您的路径很好,只是太深了)


    我解决了

    avast删除目录中的server.php
    所以禁用防病毒

    检查您的laravel文件夹中的(server.php)文件

    server.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php

    /**
     * Laravel - A PHP Framework For Web Artisans
     *
     * @package  Laravel
     * @author   Taylor Otwell <taylor@laravel.com>
     */


    $uri = urldecode(
        parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
    );

    // This file allows us to emulate Apache's"mod_rewrite" functionality from the
    // built-in PHP web server. This provides a convenient way to test a Laravel
    // application without having installed a"real" web server software here.
    if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
        return false;
    }

    require_once __DIR__.'/public/index.php';


    此类问题的另一个陷阱:避免在Windows计算机上的Unix shell(例如Git Bash或Cygwin)中运行pear。我遇到了同样的问题,上面建议的路径修复没有帮助。切换到Windows Shell,pear命令按预期工作。


    尝试添加驱动器号:

    1
    include_path='.;c:\\xampplite\\php\\pear\\PEAR'

    还请验证PEAR.php是否确实存在,它可能位于\ php \中:

    1
    include_path='.;c:\\xampplite\\php'


    推荐阅读