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

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

ただいまの
回答率

89.13%

PHP INFOに ldap の定義が現れない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 928

saya24

score 122

Windows10のx64パソコンです。
Apache2.4とCGIのPHP7.2をセットアップ済み、OracleDBおよびSQLServerからのデータ取得も簡易ページを作って 無事達成できています。

(PDOおよびOCIなどのdll類は extフォルダより無事読み込まれている・PHPINFOに表示されている)

php.iniに
extension_dir = "C:\Program Files\php\ext" および
extension=php_ldap.dll の記載があり

C:\Program Files\php\ext のフォルダには php_ldap.dllが配置されています。

php_ldap.dllは あとから個別に格納したわけでなく php-7.2.22-Win32-VC15-x64.zipの展開からextフィルダに当初より得ているものです。

【質問】
PHPINFOにldapの定義を表すためには 一体 何を疑うべきでしょうか?
Apacheのサービスは 幾度とリスタートを繰り返しております。
よろしくお願い致します。

【追記】
イメージ説明
本家PHPマニュアルのサイトを確認しまして、php_ldap.dllを利用する場合、上記のように別のdll2つが必要との記述を発見しました。
現在WindowsServer2012で運用中のWebサイトについての開発環境を Windows10(x64)端末に作り出そうとしています。
確かに無事LDAPを達成している実務運用中のServerは パスが通ったPHPフォルダに当該2つのdllが直接おかれている状態です。 かたや今回PHPINFOにldapのセクションが現われないWindows10端末は
これら2つのdllが存在していない状態でした。

一先ず実務運用中のサーバから2つのdllを 左記環境同様PHPフォルダへ移植、その後Apache2.4再起動で「いざ」という思いで PHPINFOを表示してみました....。
結果は変わらず....相変わらずldapのセクションは現れず 空しくなりました。

・配置だけではなく、何かコンパイルみたいなことが必要なのでしょうか?(やったことがありません)
・そもそも 解決の糸口として見つけた方向性は 間違っているでしょうか?
・Windows10でphp_ldap.dllを利用できている方おりましたら 特別な設定が必要が否か教えてください。

本日2019/9/17 2236の状態です。PHPフォルダに2つのdllを追加したのちのApacheのErrorログ
イメージ説明

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Y.H.

    2019/09/04 09:53

    phpinfo の「Loaded Configuration File」の項目には、saya24さんが編集/表示されているphp.iniのpathが表示されていますか?

    キャンセル

  • saya24

    2019/09/04 18:43 編集

    皆様ご見解をありがとうございます。
    Y.Hさん php.iniの所在パスがしるされておりました。
    CHERRYさん PC上で複数存在しているか否かといえばYesですが、ごみ箱の中です。
    m6uさん php.iniのアクセス権に問題あればOracelやSQLServerからデータが取得できないはずなのに無事にデータを取得できています。

    キャンセル

  • saya24

    2019/09/07 11:30

    https://stackoverflow.com/questions/8826379/unable-to-enable-php-ldap-even-though-i-have-edited-php-ini-and-php-ldap-dll-is

    こちらで同じような問題に直面されているようですが、結局このかたは何をなさったのでしょうか??
    現在私はlibeay32.dllとssleay32.dllを、環境変数pathに登録してあるC:/Program files/phpに配置して確認した状態です。

    一体私は何をしたら良いのでしょうか??

    キャンセル

回答 2

checkベストアンサー

+1

私も勉強がてら色々試して設定した結果phpinfo()に表示する事で良ければできました。
xamppではなくphpとapacheを個別に入れたので単純に設定できていないのだと思います。
そして私は、xampp、php、apache、opensslはすべて全くの素人ですので以下は自己責任で行ってください。

確かにxamppのphp.iniのextension=ldapをコメントから外し、libeay32.dllとssleay32.dllは phpフォルダに入れるだけでxampp版は表示が出来ました。
しかし、個別にphpとapacheを導入している場合は表示はできませんでした。

まずは、現状のphpinfo()を見てください。OpenSSLの項目も無いはずです。
そして、回答です。
xamppを参考にしただけなのですがphp.ini内をopensslで検索してを以下に変えてください。

;extension=openssl ;これはコメントでも表示できました。
extension=php_openssl.dll
[openssl]
openssl.cafile = "\Program Files\apache24\bin\curl-ca-bundle.crt"


※apacheのフォルダはどこか不明ですのでご自身のに変えてください

これで表示できるはずです。
xamppにはbinフォルダ下にcurl.exeとcurl-ca-bundle.crt(証明書)があります。
個別にapacheを導入した場合はありませんが(本当は必要のようですが)なくても表示自体はできるようです。
phpやapacheの個別の環境がどの様にされているか不明ですが基本こちらは.zipファイルを展開し、
apacheのhttp.confにphpの設定を書きhttpd.exeをダブルクリックで実行してphpファイルを表示しているだけです。

*最後に私の試した環境
Windows10 home x64 64bit
xampp:xampp-windows-x64-7.3.8-2-VC15.zip
php個別:php-7.2.22-Win32-VC15-x64.zip(Thread Safe)
apache個別:httpd-2.4.41-win64-VS16.zip
(2.4.29はどこにあるか分からなかったので最新のを使いました)

 編集

原因は、2つありそうです。

  1. ldapを読み込みで存在しないPathを読んでいるからでした。
    これを合わせる。

2 .それと、php.exeがあるフォルダ(phpフォルダになると思います)にシステム環境変数のPathを
通し(コマンドプロンプトでどのディレクトリにいてもphp -vでバージョン確認ができる事)、
libeay32.dllとssleay32.dllをphp.exeと同じフォルダに入れておく。
または、Windowsのsystem32フォルダにlibeay32.dllとssleay32.dllを入れてPCの再起動をする。
※もしかしたらlibsasl.dllも関連している可能性もあるとかなんとか。

php.iniの編集

extensionを指定していないので`C:\php\ext\php_ldap.dllとなってしまう様です。 xamppではextension_dir=にPathが指定されておりました。

; On windows:
; extension_dir = "ext"
extension_dir="C:\Program Files\php\ext"
extension=ldap
extension=openssl
;extension=php_openssl.dll ;これは、レガシーの書き方の様なのでextension=openssl

これで、extension=ldapC:\Program Files\php\ext\php_ldap.dllを読みに行くようです。 ※opensslも同じ。

これでもエラーログに存在するPathなのに出る場合は上記2.のどちらかを行うと表示されるはずです。 私も2.を行う前は同じエラーがでましたが、Pathを通すと表示する事が出来エラーも無くなりました。

httpd.confの編集

後は、変更したといえばApacheの方ぐらいしかないので変更箇所を書いときます。

#ServerName www.example.com:80
ServerName localhost:80

#DocumentRoot "${SRVROOT}/htdocs"
#<Directory "${SRVROOT}/htdocs">
DocumentRoot "C:/Workspace/xxx/"
<Directory "C:/Workspace/xxx/">
  Options Indexes FollowSymLinks Includes ExecCGI
  AllowOverride All
  Require all granted
</Directory>

LoadModule php7_module "C:/Program Files/php/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "/Program Files/php"
<IfModule dir_module>
  #index.phpを追加
    DirectoryIndex index.html index.php
</IfModule>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/18 09:35

    shinamiさん、長時間に渡りお付き合いを頂きありがとうございます。
    摩訶不思議なことが起きています。昨晩22:50に、Windows\system32\へlibeay32.dllとssleay32.dllをPHPのフォルダから移設して、端末再起動後のPHPINFO照会で失敗を報告しています。また、この後にはシステム環境変数PATHへ 例の定義の最後に「\」を追加する作業を行い、再度PHPINFOを照会してダメだった記憶です。

    現在当該端末のPHPINFO、無事にLDAPのセクションを表示しています。何が効を奏したのか理解不能。

    libeay32.dllとssleay32.dllの配置をPHPフォルダ側に戻して、再度様子をみてみます(現行の実務サーバWindowsServer2012でも、PHPフォルダにこの2つのDLLが入っています。そちらのPHPはVer7.0です)。

    また連絡改めます、少し兆しが見えてきた!

    キャンセル

  • 2019/09/18 09:58 編集

    shinamiさん 親身になって対応頂き 本当にありがとうございました。
    XAMPPだよりでなく個別にPHPを導入する場合、PHP本家のマニュアルのとおり、libeay32.dllとssleay32.dllが必要であり、その配置すべき場所はPHP.exeと同様の場所であることが妥当。一先ずそう解釈しました。OpenSSLについても有効化が必要なのか否かは正直不明です。もうiniを編集したくなくて試す気になれません。
    2つのdllの入手先・配置箇所は 当方が掲載している別案件にも記載し、クローズさせます。
    一連本当にお世話になりました。

    ★2019/11/04 追記★
    OpenSSLをPHP.ini上で有効化せずとも、ldapのみを有効化することでPHPINFOへ表示された。
    尚、libeay32.dllとssleay32.dllをPHPフォルダに直接おいての話。この2ファイル、自分は「httpd-2.4.41-o102s-x86-vc14-r2.zipを解凍して納められていたものを流用」

    キャンセル

  • 2019/09/18 11:19

    お、できましたか。
    確かに、原因がちょっと不明ですね。
    php7.0と7.2の違いではない気がします。
    もしその程度で変化があるのだとするとみんな使いづらい気がします。

    xamppはインストーラなのでProgram Filesへ入らないという事でしょうか?
    その他のダウンロードから.zip版もダウンロードできるようなので
    https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.2.22/
    .zipファイルを展開しphpやapacheフォルダだけ抜き取ってみる事ができると思います。
    が、個別にフォルダだけ移動したらどうなるかは不明です。

    まぁ、今の環境が壊れないように今は余り試さない方が良いでしょう。
    こちらも、OpenSSLについては確かに今となっては本当に必要なのかも分かりません。

    こちらも大変勉強になりました。

    キャンセル

0

やったこと無いので、マニュアルのリンクだけ。
インストール手順

User Contributed Notes も怪しげなことが書いてありますね^^;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/08 09:31

    ご確認ありがとうございます。
    まず冒頭で、コンパイルの必要性があるみたいな記載があるのですが、User Contributed Notesで誰一人コンパイルしている様子がなく、コンパイルというものを私は行うべきかいなか迷っています。
    次に気になったのは、oci8との競合を言及されている方がおられる点ですね。ただ試しに一時的にiniファイル上のoci8のextensionを無効にして様子をみてみたのですが……状況はかわりませんでした。

    手元のマシンが64ビットであれば、本来は Win32ユーザーへの注意 というコメントは無視して良いのですよね??
    現在、libeay32.dllとssleay32.dllは phpフォルダに配置しています。

    キャンセル

  • 2019/09/16 11:55

    ひとまず、まっさらな別のWindows10端末を用意して、PHP7.2の開発環境兼動作環境(Apache2.4)xamppを利用して 構築することにしてみました。
    xamppは関連する一式(dll等)・整合性を保って入手することには 長けている認識ですから。

    で、やはり...その端末 PHPINFOにLDAPのセクション うまく現れました。

    そこで!!
    こちらの端末から XAMPP配下のPHPフォルダ丸々を、問題が生じている端末へ移植したら 問題は解決するかな、と願いを込め チャレンジしてみましたが、撃沈でした。状況変わらずでした。
    移行してきたPHP.iniのextention_dirを、XAMPPの設定から 当該端末用(PHPフォルダの配置が違うので)に編集、Apacheもサービス再起動しています。端末も一応再起動しています...

    のちのち、WindowsServer2016へ この開発端末で仕上げる構成要素一式(Apache2.4・PHP)をアップすることを考えています。xamppで構成した一式は もっていく つもりはありませんでした。

    開発端末はXamppで仕上げ、実務想定のサーバには 必要最低限のものをもっていくことを考えていました。皆さんもそうでは ないのでしょうか...質問の方向性がズレてきましたが 

    あ~本当どうしようかな...

    キャンセル

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

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる