🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
LDAP

LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

6626閲覧

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

saya24

総合スコア246

LDAP

LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/09/03 11:48

編集2019/09/17 13:38

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ログ
イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/09/03 11:53

php.iniのどこかで文法エラーが有ってphp.iniの内容が反映されていない状態でphpが起動しているとか。あるいはphp.iniのアクセス権がおかしくてphp.exeから読めないとか。しらんけど。
CHERRY

2019/09/03 23:23

他にも php.ini が複数あって、読み込んでいる php.ini が異なっている可能性もあるかな。
Y.H.

2019/09/04 00:53

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

2019/09/07 03:49 編集

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

回答2

0

ベストアンサー

私も勉強がてら色々試して設定した結果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/16 11:55

編集2019/09/17 14:22
shinami

総合スコア334

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saya24

2019/09/16 12:15

有難うございます。xamppを利用した場合の設定との違いを、時間を費やしくまなく確認頂いたのですね。shinamiさんに頭があがりません。 まずは、php infoにLDAPのセクションが表示されなければ何も始まらないと考えているので、大変貴重なご見解です。 いかんせん手元に問題の端末がないものですから、明日確認して結果を報告します。いい方向に向かえば良いのですが…
shinami

2019/09/16 12:46

まぁ、私も勉強ついでにできるか試してみただけなのでこれで良いのかは分かりませんが・・・。 あと、本家ApacheのサイトのダウンロードにApacheHausというのがあり、 https://www.apachehaus.com/cgi-bin/download.plx へ飛びましたがApacheにプラスしてOpenSSL関連のlibeay32.dllとssleay32.dllとかも binファイルに同梱していますね。 私は、その下のApache Loungeでダウンロードしましたが。 まぁ、表示ができ少しでも前に進めれるヒントになればと思います。
saya24

2019/09/17 04:20

shinamiさん ご支援ありがとうございます。問題のパソコンで圧縮ファイルからPHPフォルダを再度新設(解凍)してチャレンジしています。php.ini内で、 extension=ldap のコメントをはずし、extension=php_openssl.dll を追記 さらに openssl.cafile="C:\Program Files\apache24\bin\curl-ca-bundle.crt" を追記。 この上でApache2.4のサービスを再起動(つまりはこちらは既設)して、phpinfo()を再表示してみました。→→→ OpenSSLのセクション現れるも、LDAPのセクションは未だ 現れていません。 libeay32.dllとssleay32.dll について、xamppでセットアップした別の端末では 特段気にする必要がなかったのすが、個別対応の際は これらを気にする必要があるのですかね??(どこにも存在してないが)ApacheのBinフォルダに入れる?? Apache2.4についても フォルダをピカシンで作り直すと手立てが有効なのでしょうか.... 何か前の設定作業の残骸が 当該システムに残ってしまっていると考えるべきでしょうか??? もし、差し支えなければ引き続きご見解をよろしいお願いします。
saya24

2019/09/17 07:52

shinamiさんが試された一連とPHPは全く同一のVerであるも、Apacherが微妙に違うようので これからまったく同じものを導入してみます!
shinami

2019/09/17 08:24 編集

何がいけないのかこちらでも先ほど調べようとした所、昨日 ldapとopensslが出ていたものが何故かこちらも出てこなくなりました・・・。 phpinfo()のLoaded Configuration Fileに C:\Program Files\php\php.iniファイルが書かれていた事は昨日確認していましたので 何か変ですね。 そこでApacheのエラーログ(logs\error.txt)を見てみた所 PHP Warning: PHP Startup: Unable to load dynamic library 'ldap'と PHP Warning: PHP Startup: Unable to load dynamic library 'php_openssl.dll' この様なログがありうまく読み込めていないようです。 しかも、C:\php\ext\ldspを読み込もうとしている様なので全くPathが合っていない気がしました。 そこで php.iniのextension=ldapとextension=openssl(コメントから外す)を extension=C:\Program Files\php\ext\php_ldap.dll extension=C:\Program Files\php\ext\php_openssl.dll と絶対Pathに変えてみると以前エラーログが出力されるもopensslの方だけ 表示されるようになりました。 xamppの方はこの様なエラーログが出力されていません。
saya24

2019/09/17 11:29

xamppだよりではなく、shinamiさんと全く同じVerのApacheを用意して、httpd.conf・PHP.iniをいじくって なんとかPHPINFO()を表示できる段階に追いつきました... そして私もApacheのエラーログに PHP Startup: Unable to load dynamic library 'php_ldap.dll' (tried: C:\Program Files\php\ext\php_ldap.dll.....のエラー出力を招いています。 なお、私の現況のPHP.iniは extension=php_ldap.dll extension=php_openssl.dll の定義を入れており、PHPINFOにはopensslのセクションのみが現れている状態です。 xamppからの導入でLDAP含めて無事セットアップを成功した端末(Windows10)は 特段libeay32.dllとssleay32.dllを 配置することさえ しませんでした。php.iniのextention=ldapのコメントを外したのみです。 あ~困った....
shinami

2019/09/17 12:13 編集

出来ましたよ。本文に追加しました。 apacheのエラーログを見ましたがやはり、昨日の段階でもエラーが出力されていたので 出来ていなかったのだと思います。 が、何故か表示出来ていたんですよね・・。 あと、私がダウンロードしたxampp版はlibeay32.dllとssleay32.dllがphpフォルダに無かったので 入れました。
saya24

2019/09/17 12:18

shinamiさん、なんでそんなに優しいの! 今から試してみます。
saya24

2019/09/17 12:51

php.iniにextension_dir = "C:\Program Files\php\ext" の記載及び phpフォルダのシステム環境変数PATHへの定義 は ド定番のステップとして当初より対応してきていました。コマンドプロンプトからのPHP -Vコマンドでのヴァージョン確認、勿論確認していました(本文の説明が大変丁寧で関心します)。 shinamiさんの今しがたのアドバイスを元に php.ini上のdllの参照定義は、いま風の記述 extension=ldap とextension=openssl へ変更しました。 それから、Apacheサービス再起動→PHPINFOで状況確認→LDAPセクション現れないこと確認→Apacheエラーログで「PHP Startup: Unable to load dynamic library 'php_ldap.dll」のエラー確認、というのが現況です。 shinamiさんによれば、この状況には「libeay32.dllとssleay32.dllをphp.exeと同じフォルダに入れておく」が有効に思われ、「私がダウンロードしたxampp版はlibeay32.dllとssleay32.dllがphpフォルダに無かったので入れました」とのコメントも頂いています。 まさにもう一方の問い合わせ案件ですが、どこから入手しました、その2つのDLL?? 私も PHPのフォルダに入れて(今はない)PC再起動後の状況を確認したいです!!!
shinami

2019/09/17 13:04

zip版がどこかにあったと思うのですが・・・どこだっけ。 それか、https://www.apachehaus.com/cgi-bin/download.plx のhttpd-2.4.41-o102s-x86-vc14-r2.zip(一番上の) のapacheのbinフォルダにもあるみたいなのでとりあえず。
shinami

2019/09/17 13:27

それでもまだできない場合は、 extension=ldapに変更しているのに 「PHP Startup: Unable to load dynamic library 'php_ldap.dll’」 と出ているのでもう1つextension=php_ldap.dllがある様な気がします。 「PHP Startup: Unable to load dynamic library 'ldap’」ならまた別ですが。 ファイル内をldapで検索してextension=php_ldap.dllがあれば消すかコメント にして下さい。
saya24

2019/09/17 13:36

ひとまず現況のApacheのErrorログの画像 貼り付けます。 shinameiさんに申し訳なくなってきました。System32側に2つのdllをもっていく、としますかね。今はPHPのフォルダに ご提示頂きましたサイトから取得した2つのdllを格納、PC再起動で 状況を確認しました。 このパソコン、レジストリか どこかに前作業の残骸が残ってしまっているのかな~....
shinami

2019/09/17 13:48 編集

システム環境変数のPathに C:\Program Files\php\ であっていますか? エラーログもほぼこちらも同じです。
saya24

2019/09/17 13:50

早速確認しました。現況「C:\Program Files\PHP」です。shinamiさん提示との違いは最後の\のあるなしです。これまずいですかね?? ちなみにPHPフォルダから windows\system32 に2つのdllを移行して PC再起動しましたが 相変わらず PHPINFOへ LDAPのセクションは現れていない状況です。 あ~終電が近い...
shinami

2019/09/17 14:07

最後の\、それは、関係ないみたいです。 何かの環境の問題ですかねぇ。
shinami

2019/09/17 14:24

後は、Apacheのhttpd.confの設定を変更したぐらいです。 まぁ、終電もありましょうから、明日にでもやってみてください。
saya24

2019/09/17 15:01

xamppでセットアップすると、C:¥program filesの中にApacheとPHPが入らないのですよね〜。 現在までにサーバーで運用してきているこの構成同様の状況をWindows10に作り出そうとしていた背景は、この端末を経由して別サーバーへの移行を考えていたからでした。パスがコーディングされている可能性もありますからね、そのままが一番と思ったわけです。 ま、その過程で、PHPを7.0から7.2へアップしようとしたことが災いの始まりでした。 この発端、くだらないことですがEclipseでのデバッガ、xDebugerがもう7.0版では提供されていなかったから、というものでした。 皆さん苦労していないのかな、昨今のPHPとLDAPの組み合わせに
saya24

2019/09/18 00: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です)。 また連絡改めます、少し兆しが見えてきた!
saya24

2019/11/04 00:42 編集

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を解凍して納められていたものを流用」
shinami

2019/09/18 02:19

お、できましたか。 確かに、原因がちょっと不明ですね。 php7.0と7.2の違いではない気がします。 もしその程度で変化があるのだとするとみんな使いづらい気がします。 xamppはインストーラなのでProgram Filesへ入らないという事でしょうか? その他のダウンロードから.zip版もダウンロードできるようなので https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.2.22/ .zipファイルを展開しphpやapacheフォルダだけ抜き取ってみる事ができると思います。 が、個別にフォルダだけ移動したらどうなるかは不明です。 まぁ、今の環境が壊れないように今は余り試さない方が良いでしょう。 こちらも、OpenSSLについては確かに今となっては本当に必要なのかも分かりません。 こちらも大変勉強になりました。
guest

0

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

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

投稿2019/09/07 20:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saya24

2019/09/08 00:31

ご確認ありがとうございます。 まず冒頭で、コンパイルの必要性があるみたいな記載があるのですが、User Contributed Notesで誰一人コンパイルしている様子がなく、コンパイルというものを私は行うべきかいなか迷っています。 次に気になったのは、oci8との競合を言及されている方がおられる点ですね。ただ試しに一時的にiniファイル上のoci8のextensionを無効にして様子をみてみたのですが……状況はかわりませんでした。 手元のマシンが64ビットであれば、本来は Win32ユーザーへの注意 というコメントは無視して良いのですよね?? 現在、libeay32.dllとssleay32.dllは phpフォルダに配置しています。
saya24

2019/09/16 02: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で仕上げ、実務想定のサーバには 必要最低限のものをもっていくことを考えていました。皆さんもそうでは ないのでしょうか...質問の方向性がズレてきましたが  あ~本当どうしようかな...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問