中田さん. 重ねてのご教示有難うございました.
「前提条件に注意しろ」はphpの書物を読んで,気になっていることでした.
一般的に成り立つことなのか,はっきりしてないので.
一から十まで著者の環境だと思うことにして,私の環境でどこまで流用できるのかを考えながらやっています.
吉岡さん、
「ANTTPD ではどちらでも通用する」のではありません。php.ini を読み込んで処理するのは php.exe ですから。
Windows 上で PHP を使う場合に php.ini のパスの指定ではどちらでも通用する、ということです。
ですからPHP ならどこででも通用するわけではありません。「\ はダメ,/ を使え」というところもあります。 前提条件なしで「/ は \ でもよい」などと覚えるととんでもないことになります。
基本的理解
中田さん.ご丁寧な説明を頂き有難うございます.
>extension_dir の方については、吉岡さんが ./ の意味がわかっていなかったのではないかと思います。
>PHP(や Perl や大半の UNIXベースで開発されたソフトウェアのWindows版)では、
>パス区切り文字は UNIX の / と \ は同じ扱いになっていることが多いと思います。
ANTTPD では「どちらでも通用する」とは理解していませんでした.apache を利用するPHP書籍を参考にしているのですが,「\ はダメ,/ を使え」という記事をみています.
私はANHTTPDしか知らないのですが,パソコンで php.ini を開いてみますと,随所に
Windows用のところで \ を見かけます.しかもエラー表示では / と \ の両方とも見かけています.
私はエラー表示を出すスクリプトが異なっているからだろうと理解していました.
他日,phpスクリプトで / を使ってみす.
吉岡さん、
extension_dir の方については、吉岡さんが ./ の意味がわかっていなかったのではないかと思います。
PHP(や Perl や大半の UNIXベースで開発されたソフトウェアのWindows版)では、パス区切り文字は UNIX の / と \ は同じ扱いになっていることが多いと思います。
つまり
extension_dir = ./
というのは
extension_dir = .\
と同じです。 .\ というのはカレントディレクトリということです。
カレントディレクトリは何になるかというと、php.exe を使っている場合は PHPファイルを置いてあるフォルダ(ディレクトリ)です。
ですから、
extension_dir = ./
のままの場合は、php_imap.dll を PHPファイルと同じところにコピーしておけばよい、ということになります。
また、
extension_dir = c:\php\extensions
でなくても逆に
extension_dir = c:/php/extensions
でもOKで、
ドライブがC:だけなら、
extension_dir = /php/extensions
でも大丈夫です。
また、相対パスで、たとえば
extension_dir = ../../php/extensions
などでもいいわけです。(これは php.exe と php4isapi.dll とで表現はかわりますし、PHPファイルをどこに置いているかにもよりますが)
さらに、php_imap.dll などを C:\Windows\system32 に置くのなら、
extension_dir = C:\Windows\system32
としておけばよいということになります。
、、というようなことをわかっていた方がよいと思います。
拡張モジュール呼び出しは成功
中田さん.ご多用中のご教示有難う御座います.
c:\WINDOWSの中に置いたphp.iniの中で,(php v.4.2.3)
extension_dir = c:\php\extensions (377行目)
472行目(extensionが並んでいる)php_imap.dll の行頭 ; はずし,
でうまくいきました.
ただ私の場合,一本道でありませんでした.これまでのチェックで,
php.iniはさんざんいじっていたので,再インストールしました.
phpinfo();でver.情報が表示されることだけを確認して,直ちに
問題の拡張モジュール呼び出しを試みました.ウソのように成功しました.
nova_akira さんの貴重なお知恵にも感謝します.
私は,まだまだ勉強不足です.よろしくお願いします.
吉岡さん、
extension_dir = c:\php\extensions
でいいはずです。
正確にこの通り設定してちゃんと保存してから試してくださいね。
「みつからない」ではなく「表示できない」でした.
すみません.
nova_akira さん.貴重なお知恵を有難う御座いました。
>まず、「extensions_dir= ./ 」と元に戻し、
>「;extension=php_imap.dll」の「;」をはずす。
>次にC:\WINDOWS\SYSTEM にphp_imap.dll をコピーしてみてください。
まだ,不成功ですが,php4での仕掛けが,ご教示により飲み込めて来たつもりです.
現状では,C:\WINDOWS\SYSTEM にphp_imap.dll をコピーの場合は「リンク切れ」の
意味の表示「見つからない」です.このファイル名を pphp_imap.dll に変更しますと
Unable to load dynamic library './php_imap.dll' - 指定されたモジュールが見つかりません。
という表示になります.このことから,ご教示の設定で,php_imap.dllをちゃんと発見できたが,
このファイルの入り口が正常でないということではないかと疑っています.
ファイルの大きさをプロパティであたってみますと564kbです.
現状から一歩でも進むためのヒントなり教えて頂ければ幸いです.
吉岡さんはじめまして。
試していただきたいのですが、
まず、「extensions_dir= ./ 」と元に戻し、
「;extension=php_imap.dll」の「;」をはずす。
次にC:\WINDOWS\SYSTEM にphp_imap.dll をコピーしてみてください。
これで動作するか確認してみてください。
じお さん,ご指摘有難うございます.
>おそらく、extensions_dir= ./ の右辺が”C:\php\extensions”ではな
> く”./C:\php\extensions”になっていると思います。
その透りでした.改めて確認したのですが,この ./ をはずしますと,
ページを表示出来ない という表示になります(いわゆる「リンク切れ」の表示)
dllファイルの存在を当たってみますと,c:\php\extensions\php_imap.dll に間違いないのです.
php.iniファイルの方で,(377行目)extensions_dir="/C:\php\extensions\" と記入
すれば,Unable to load dynamic library '/C:\php\extensions\php_imap.dll'
と表示されます.それで,先頭の / を削除しますと,ページを表示出来ない という表示になるのです.
このような状態ですが,お気づきのことを教えて頂ければ幸いです.
>吉岡 啓介さん
php_imap.dllは使用した事が無いので他の.dllで実験してみたところ、
---Unable to load dynamic library './php_imap.dll' と表示されているようなので、
おそらく、extensions_dir= ./ の右辺が”C:\php\extensions”ではなく”./C:\php\extensions”になっていると思います。
php4 拡張モジュール の組み込み
ANHTTPDでPHP4を動かしています.拡張モジュールを利用しない段階では
たいていのことが出来ていると思っています(いとさんのページ「AN HTTPDでPHPを
動かす」のお世話になりました)
メイル関係で,php_imap.dll が必要となりましたが,「指定された場所にみつからない」という意味の表示が出ます.
対策を教えて頂ければ幸いです.
C:\php フォルダにphpを入れ,php.iniをC:\WINDOWSの中(直下)に入れてあります.
php.iniは次のように設定してあります.(拡張モジュール関係分)
このphp.ini 472行目(extensionが並んでいる)php_imap.dll の行頭 ; はずし,
377行目 extensions_dir= ./ の右辺を C:\php\extensions に変更しました.
これで,印刷命令だけの phpファイルを走らせますと,
Unable to load dynamic library './php_imap.dll'-指定されたモジュールが見つかりません
の表示です.
当然ながら,C:\php\extensions に php_imap.dll は存在しています.
C:\WINDOWS\SYSTEM32 の中に php.ini を入れると,CGI関連の設定での「警告」が表示されます.
php4 拡張モジュール php_imap.dll が認識されるための方策を教えて頂ければ幸いです.