質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

受付中

ロリポップでPEARのインクルードの方法

退会済みユーザー

退会済みユーザー

総合スコア0

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

1回答

0リアクション

0クリップ

2273閲覧

投稿2019/10/25 10:40

レンタル共用サーバーのロリポップにPEARをインストールしてユーザー認証をしたいです。

ロリポップとしてもPEARはインストールしてあるようですが、Authなどパッケージは権限が無くてインストールできません。

そこでここのサイトを参考にして自分のWebルート以下に入れる方法をとってみました。
PHP.iniは変更できないので、PEARインストール時にphp.iniのインストール操作はNoで進めました。
PEARはsshでphp go-pear.pharで行っています。

インストール構成
/ROOT/web/PEAR内にインストール。
その中にbin, cfg, data, docs, man, share, tests, wwwディレクトリです。

ロリポップの場合、インクルードさせるにはファイルを書いてその中に、インクルードパスを記述。
そのファイルを管理画面からauto_prepend_fileに指定する。

## path.incとして下記を記述。 <?php ini_set('include_path', '.:/home/users/X/lolipop.jp-YYYY/web/PEAR'); ?>

path.incをauto_prepend_fileに指定。

phpinfo()を見ると、

DirectiveLocal ValueMaster
auto_prepend_file/ROOT/path.inc/ROOT/path.inc
include_path.:/ROOT/PEAR.:/usr/local/php/7.3/lib/php

となってます。

実行

試しにサイトからの借り物です。

<?php require_once "Auth.php"; // 三つの引数を受け取ります。それぞれ // 直近にログインを試みたユーザ名、認証状態、そして Auth オブジェクトです。 // このシンプルなデモではこれらを使用しませんが、ちゃんとした処理を // 書く際には必要となるでしょう。 function loginFunction($username = null, $status = null, &$auth = null) { /* * HTML出力は、作成するアプリケーションに合うように、 * 変更してください。 */ echo "<form method=\"post\" action=\"test.php\">"; echo "<input type=\"text\" name=\"username\">"; echo "<input type=\"password\" name=\"password\">"; echo "<input type=\"submit\">"; echo "</form>"; } ?>

上記を実行すると、500エラーになってしまいます。
require_once行を抜けば実行。

  • つまりパスが通ってないのか?
  • そもそもPEAR自体に問題があるのか?

ロリポップは複数バージョンのPHPがありますが、それぞれの下にPEARが公式にインストール済み。
include_pathにある「/usr/local/php/phpバージョン/lib/php/」以下。
ここでインクルードしているのと、/ROOT/PEARをインクルードしていることでバッティング的なことが起きているのでしょうか?

インクルードパス自体がおかしい?

## path.inc <?php ini_set("include_path", ".:/ROOT/PEAR;.:/usr/local/php/phpバージョン/lib/php"); ?>

とすればinclude_pathのローカル側でも2箇所バスが通りますよね?
と何も考えずにやってみましたが、これも変化無し。

疑問

自分のWebルート以下にインストールしたPEAR。
これに対するパスはどこを指定すべきでしょうか?
今はPEARが入っている親ディレクトリ。それを例えばbinにする?
binやshare/pearなどパスを変えてみましたが、実行できず。

参考にしたサイトはPHP5.3で実行しているようですが、
PHP7系のロリポップではPEARは使えないのでしょうか?

PHPで認証機能を持たせたいのですが、
PEARに代わるものってあるのでしょうか?

よろしくお願いします。

※ちなみにロリポップはBASIC認証のみでDigest認証は使えません。

環境

CentOS(バージョン非公表)、Apache、PHPは7.1と7.3で試してみました。
契約プラン:エンタープライズ

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。