さくらインターネットでimap_openができないエラーの解決方法

このQ&Aのポイント
  • さくらインターネットでimap_openができないエラーが発生しました。個人用のphp.iniファイルを編集することで解決する可能性があります。
  • さくらのレンタルサーバではphp.iniの設定を変更できるため、個人用のphp.iniファイルに以下の設定を追加してみてください: extension=php_imap.so、extension=imap.so
  • また、個人用のphp.iniファイルの文字コードをSJISやEUCに設定してみることも有効な解決策です。
回答を見る
  • ベストアンサー

さくらインターネットでimap_openができません

プログラムを実行すると以下のエラーが出てしまいます。 Fatal error: Call to undefined function imap_open() in **** 環境はさくらのレンタルサーバ、スタンダードプランです。 http://www.sakura.ne.jp/rentalserver/matrix.html 個人用の設定ファイルphp.iniに以下をそれぞれ追加してみましたが、phpinfo()の結果を確認してもimapが組み込まれていません。 extension=php_imap.so extension=imap.so さくらのレンタルサーバでは個別に php.ini の設定を変更することができるそうなので、 個人用のphp.iniファイルを編集し、以下の様に文字コードをSJIS,EUCそれぞれ試してみたところ、phpinfo()の結果に反映されていました。 default_charset = "SJIS" or EUC mbstring.internal_encoding = "SJIS" どうすればimap_open()を使えるようになるでしょうか? アドバイス宜しくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

phpinfo()で「--with-imap」が指定されていなければ、どうやっても使うことは出来ません。php.iniの「設定」でどうにか出来ることではありません。   http://www.php.net/manual/ja/ref.imap.php PEARライブラリあたりで代替するしかないと思います。

narusuji
質問者

お礼

ご回答ありがとうございます。 自宅のWindows環境ではphp.iniに extension=php_imap.dll を追加するだけでphpinfo()に反映されimap_openが使えたので、 Linux,BSDサーバでも同じようにすれば使えると思っていました。 が、よく考えればLinuxでパッケージをソースからインストールする際に ./configure --help(prefix,enable) などやっていたのを思い出しました。 おっしゃるとおり、さくらでphpinfo()を確認しましたがConfigure Commandの欄にimapはありませんでした。 PEARについて調べてみます。 どうもありがとうございました。

narusuji
質問者

補足

結果報告 自宅Windows環境にPEARをインストールし以下プログラムでメールを受信する事が出来ました。 <?php require_once("Net/POP3.php"); $pop3=new Net_POP3(); $pop3->connect("pop.mail.yahoo.co.jp","110"); $pop3->login("username","passwd"); echo mb_convert_encoding($pop3->getBody(1),"SJIS","auto"); ?> 参考URL http://pear.php.net/manual/ja/package.networking.net-pop3.php

関連するQ&A

  • さくらインターネットでphp.iniの設定が反映されない

    いつもお世話になっています。 さくらインターネットの共用サーバにPHP5,PEARをインストールし、 PHPプログラムにて、mb_convert_encoding()を実行すると、 Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding in ・・・ と表示されました。 php.iniの設定内容を疑って、内容を確認したところ、 さくらインターネットのコントロールパネルからphp.iniを更新しているのですが、 phpinfo()で見るとmbstringの設定項目が反映されていないのです。 ■phpinfo()の表示内容: Multibyte Support enabled Multibyte string engine libmbfl Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 4.4.4 Multibyte regex (oniguruma) backtrack check On Directive Local Value Master Value ------------------------------------------------------------- mbstring.detect_order no value no value mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input pass pass mbstring.http_output pass pass mbstring.internal_encoding ISO-8859-1 no value mbstring.language neutral neutral mbstring.strict_detection Off Off mbstring.substitute_character no value no value ■php.iniの中の下記の設定項目が反映されていることは確認できました。 cgi.fix_pathinfo=1 register_long_arrays = on ■mbstringのphp.iniでの設定は下記の通りです。 mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translastion = On mbstring.detect_order = auto mbstring.substitute_character = none; ■phpinfo()で表示したその他の項目 ・PHP Version 5.2.1 ・FreeBSD ・Configuration File (php.ini) Path /home/example/www/php.ini -------------------------------------------------------------- さくらインターネットのコントロールパネルからphp.iniを更新すると通常は実行時に反映されるのですが、 なぜ、mbstringに関しての設定が反映されないのか、どうすれば反映されるようになるか、わかる方がいらしたら教えてください。

    • 締切済み
    • PHP
  • 文字化けの原因を教えてください。

    WindowsでスクリプトをEUCで保存し、シフトJISでブラウザへ出力ときの 設定として以下のようにphp.iniを設定しています。 ~php.ini~ output_buffering = On output_handler = mb_output_handler magic_quotes_gpc = Off default_charset = Shift_JIS extension_dir = C:/php/ext extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none ~php.ini~ mb_detect_encodingでDBから取得した値の文字コードは、SJISでした。 mb_convert_encoding($dbdata,"EUC-JP","SJIS")で正しく表示されます。 iniファイルの設定のみで正しく表示するにはどのように設定するのがいいのでしょうか?それとも、このような文字コード変換は必須なのでしょうか? よろしくお願いします。 [PHP使用環境] PHP=5.1.6 OS=Windows2000 PRO webserver=apatch2.0 [DB環境(リモートサーバ)] DB=MS SQL Server2000 OS=Windows2003 server R2

    • 締切済み
    • PHP
  • さくらインターネットでphp.iniが変更できない

    さくらインターネットのスタンダードプランに2009年1月から契約している、現在PHP勉強中の者です。 本日初めてphp.iniの内容を変更してみようとしたのですが、変更しようとした内容のうち一部が変わりませんでした。 どなたか原因がお分かりになる方がいらしたら教えて頂きたく思います。 【詳細】 さくらインターネットのphp.ini設定ファイル編集画面で下記のように保存しました。 output_buffering = Off default_charset = EUC-JP mbstring.language = Japanese mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.internal_encoding = EUC-JP mbstring.script_encoding = EUC-JP mbstring.substitute_character = none display_errors = On そして保存後にphpinfoで確認したところ、 output_buffering が no value 、 mbstring.substitute_character が no value 、 display_errors が STDOUT と表示されており、 mbstring.script_encoding はそもそも項目がありませんでした。 その他のものはちゃんと設定したとおりに変更されましたが、上記4点が何度設定しても変わってくれません。 いろいろ自分で調べてみたのですが解決方法がわからないため、どなたか解決方法をご存知の方がいらっしゃいましたら、何卒教えて頂きたく存じます。 よろしくお願いします。

    • 締切済み
    • PHP
  • PHP5.1 + APACHE2 + PostgrSQL8.1 + Eclipse3.2で全角文字の文字化けが

    お世話になります。PHP暦5日その内3日はこの問題で悩んでいます。 EUCとSJISが混在していることが原因だと思うのですが、 その先が進みません。 過去ログなどを読み、EUCに統一することが望ましいことが分かり、 そのつもりで挑戦しているのですがダメダメ君です。 現状では、 PostgrSQLから読み出したデータはEUCで PHP内でprintやechoなどで文字を出力するとSJISとなります。 文字化けを解決する方法お願いします。 ちなみにphp.iniはこんな感じです。 php.ini -------------------------------- default_charset = EUC-JP extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none

    • ベストアンサー
    • PHP
  • PHP 文字コードについて

    以下のような環境のホスティングサーバでSmartyを使い簡単なアプリを作っています。 サーバ PHP Version 4.3.7 phpinfoの値 mbstring.detect_order auto mbstring.encoding_translation On mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output SJIS mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.script_encoding auto mbstring.substitute_character no value 今回、PHPソースはUTF-8、HTML(Smartyテンプレ)もUTF-8で作っています(作りたいです)。 この様な場合、PHPスクリプトに「ini_set」を記述するのが良いのか、又は$_POST等で受け取ったときに毎回「mb_convert_encoding」記述するのが良いのか、その両方か、アドバイスを頂きたいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • imap_open()でLogin aborted

    phpから、imap_openを使用して、gmailの情報を受信したいのですが、 以下のように記述し、実行すると 「imap_open() [function.imap-open]: Couldn't open stream {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX」と表示されて、 更に、エラーには、「Login aborted」が返されております。 実行前に、以下の点は確認しました。  ・ アカウント、パスワードは間違っておりません。  ・ GmailのIMAPを有効にしております。  ・ 実行中の環境で、「telnet imap.gmail.com 993」を実行して接続できることを確認 いろいろサイトを調べたのですが、良い情報がなかなか見つかりません。 何が問題なのかご教授頂けないでしょうか。 よろしくお願いいたします。 --- 以下は実際のソース(アカウント、パスワードは適当なものを設定) ---- $server = "imap.gmail.com"; $port = 993; $account = "XXXXXX@gmail.com"; $passowrd = "YYYYYYYY"; // メールサーバ接続 $mbox = imap_open("{".$server.":".$port."/imap/ssl/novalidate-cert}INBOX", $account, $password); print_r(imap_errors()); // メール閉じる imap_close($mbox);

    • ベストアンサー
    • PHP
  • PHPのインストールについて

    php-5.1.2-Win32 Apache_2.0.55-win32-x86-no_ssl windows XP 秀丸エディタ 色々なサイトを見てPHPやapacheのインストールをするのですが ブラウザで"<? phpinfo(); ?>"というスクリプトを実行しても アドレス(http://localhost/phpinfo.php) ファイルの保存になってしまいます:(ダウンロード用のダイアログ起動する) httpd.conf 又は php.ini の修正もしているんですが php5ts.dllをコピー →(c:¥windows¥system32) php.ini.distをphp.iniにリネームしコピー →(c:¥windows) ファイル修正後、Apache を再起動もしています。 Apacheでは、テスト画面は成功しています PHPとApacheの連携がわるいのか、他に原因があるのかわかりません 初心者です。どうぞ宜しくお願いします。 ※ httpd.conf の修正 LoadModule php5_module c:/php/php5apache2.dll AddDefaultCharset none AddType application/x-httpt-php .php AddType application/x-httpd-php-source .phps ※ php.ini の修正 output_buffering = On output_handler = handler=mb_output_handler default_charset = Shift_JIS doc_root ="C:/Program Files/Apache Group/Apache2/htdocs" extension_dir = "c:/php/ext" extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = auto mbstring.script_encoding = EUC-JP

    • ベストアンサー
    • PHP
  • PHPがローカル環境でのみ文字化けする

    PHPをApache2.0上でローカルテストすると、ブラウザ表示がどうにも文字化けしてしまいます。 EUCで組んだスクリプトをmb_convert_encodingでSJISに変換して出力しているのですが、本番用のサーバーではきちんと動作するのに、ローカル環境ではブラウザがEUCと認識してしまっているようで、文字化けが発生します。 99%php.iniかapacheの設定がおかしいのですが、どこがおかしいか見てはいただけないでしょうか。 php.iniのそれっぽい部分 mbstring.encoding_translation = Off mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; ;mbstring.func_overload = 0 なお、Apacheのhttpd.confにAddDefaultCharset項目はありませんでした。 特殊要因としてApacheがXAMPPの中で制御されていることなのですが、php.iniはApacheのbinディレクトリ内のものを編集しています。 以上です。 どうかよろしくお願いします。 WinXP SP3 PHP 5.28 Apache 2.0 XAMPP 1.7.0 ※ApacheとXAMPPはPleiadesにてEclipseを導入したときについてきたもの。

    • ベストアンサー
    • PHP
  • PHPでpostgreSQLと接続しようとすると「call to undefind function pg_connect」というエラーが出る

    表題の件で質問させて下さい。 いろいろネットで調べると、php.ini の extension_dir="phpインストールフォルダのextフォルダ" extension=php_pgsql.dllのコメントをはずす で大抵は解決しているようなのですが、その対応をしてもどうも解決しません。 以下、わかる範囲で確認してみた項目です。 ・phpinfoで確認してみても、postgreSQLの項目は表示されていませんでした。 ・phpinfoの 「Loaded Configuration File 」のphp.iniのパスもあっています。 ・ためしに、extension=php_mbstring.dll のコメントをつけたりはずしたりすると、phpinfoではちゃんと反映されていました。 ・もちろん、extension_dirに設定しているディレクトリには、php_pgsql.dllがありました。 ちょっと何が原因なのか見当がつきません。 どなたかお分かりになる方がいらっしゃいましたらご教授願えませんでしょうか。 環境は windowsXP apache/2.2.9 PHP/5.2.6 です。 よろしくお願い致します。

    • 締切済み
    • PHP
  • mbstringが無効

    Fedora10の環境にyumでPHPをインストールし、 php.iniのmbstringを下記のように設定しています。 ところが、mbstringの実行ができません。 phpinfo()を実行してもmbstringの項目が表示されません。 どなたか、ご教示いただければ幸いです。 [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS bstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0 ;mbstring.strict_encoding = Off

    • ベストアンサー
    • PHP

専門家に質問してみよう