質問: "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のサービスは 幾度とリスタートを繰り返しております。 よろしくお願い致します。 【追記】 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/b86b22cf929fdd12a0d5e9db00f4fda9.png) 本家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ログ ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/098b6ce65d6fa3f06fc1bb5bebc0df7e.png)
回答: 私も勉強がてら色々試して設定した結果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=ldap`は`C:\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" # DocumentRoot "C:/Workspace/xxx/" Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted LoadModule php7_module "C:/Program Files/php/php7apache2_4.dll" AddHandler application/x-httpd-php .php PHPIniDir "/Program Files/php" #index.phpを追加 DirectoryIndex index.html index.php ```