71374


**前提・実現したいこと**  
以前PHPで作成されていたあるコーポレートサイトをローカル環境で動かすために、xampp環境下で適応させようとしたところ、下記のエラーが発生しております。  
もともと、config.incでインクルードパスを設定しておりました。  
インクルードパスを正常に動かすか、直接参照させるかどちらでもよいので、解決方法を教えていただきたいです。

**構造**

[code]

    c:/xampp/htdocs/test/data/shop_search.php
    c:/xampp/htdocs/test/lib/config.inc
    c:/xampp/htdocs/test/lib/Classes/PEAR/Pager.php
    c:/xampp/php/PEAR
    c:/xampp/php/php.ini
    
[/code]

**発生している問題・エラーメッセージ**

[code]

    Warning: require_once(PEAR/Pager.php): failed to open stream: No such file or directory in C:\xampp\htdocs\test\data\shop_search.php on line 16
    
    Fatal error: require_once(): Failed opening required 'PEAR/Pager.php' (include_path='C:\xampp\php\PEAR:C:/xampp/htdocs/test/lib:C:/xampp/htdocs/test/lib/Classes:C:/xampp/htdocs/test/lib/Classes/PEAR:') in C:\xampp\htdocs\test\data\shop_search.php on line 16
    
[/code]

[code]

    //shop_search.php
    require_once $_SERVER['DOCUMENT_ROOT'] . '/../lib/config.inc';
    require_once 'PEAR/Pager.php';
    
[/code]

[code]

    # php.ini
    ; UNIX: "/path1:/path2"
    include_path=C:\xampp\php\PEAR
    ;
    ; Windows: "\path1;\path2"
    ;include_path = ".;c:\php\includes"
    ;
    
[/code]

[code]

    //config.inc
    define('USER_PATH',  'C:/xampp/htdocs/' . (DEBUG_MODE ? 'test' : 'www'));
    $path = get_include_path() . ':' . USER_PATH . '/lib:'
        . USER_PATH . '/lib/Classes:' . USER_PATH . '/lib/Classes/PEAR:';
    set_include_path($path);
    
[/code]

**試したこと**  
xamppのインクルードパスを消して直接参照しようとしましたが、`;`を`php.ini`の該当行に入れてみても、  
`".:c:/php/pear/"`がインクルードパスとして必ず参照されました。  
また、php.iniなどを書き換えたタイミングでapacheの再起動はしております。

**バージョン**

  * PHP 7.4
  * Apache 2.4
  * XAMPP 3.2.4


CC BY-SA 4.0
2020-10-21T02:07:47.030
71366
2020-10-21T07:16:19.733
2020-10-21T07:16:19.733
3060
42407
question
php windows apache xampp
インクルードパスがうまく動かない


Windows環境の場合、;で区切るとのことで、PATH_SEPARATOR定数で連結したところ、パスが通りました。

下記、修正内容を記載します。

[code]

    //config.inc
    $path = USER_PATH . '/lib/Classes;'. USER_PATH . '/lib;' . USER_PATH . '/lib/Classes/PEAR;';
    set_include_path(get_include_path() . PATH_SEPARATOR . $path);
    
[/code]


CC BY-SA 4.0
2020-10-21T06:28:21.407
71374
2020-10-21T06:28:21.407
42407
71366
answer