検証はchromeのみ
BASIC認証をかけたいディレクトリに.htaccessを配置

file name .htaccess

AuthUserFile /virtual/******/public_html/.htpasswd(適当な場所に配置)
AuthGroupFile /dev/null
AuthName "Input your ID and Password."
AuthType Basic
require valid-user
<IfModule mod_headers.c>
  <IfModule mod_rewrite.c>
    <Files logout.html>
       RewriteEngine on
       RewriteRule '' '' [R=401,L]
    </Files>
  </IfModule>
</IfModule>
 

ログアウト(logout.htmlはダミーのため実際には配置しない)
https://サイト名/BASIC認証をかけたいディレクトリ/logout.html

coreserverを使ってwebサービスアプリを作ることになったが、セキュリティが甘く受信先で拒否されることが頻繁に起きた。そこでsmtpサーバーだけgmailを使ってみた。
簡単にできると思ったが、添付ファイルの日本語ファイル名の文字化けに苦労した。

最終的に以下で落ち着いた

$mimeObject -> addAttachment($file // data
,'application/octet-stream' // content-type
,mb_substr(mb_strrchr($file, "/"), 1) // attached file name
,true // isfile
,'base64' // encoding
,'attachment' // disposition
,'' // charset
,'' // language
,'' // location
,'base64' // n_encoding
,'base64' // f_encoding
,'' // description
,'UTF-8' // h_charset
);

最初の$fileはファイル名
mb_substr(mb_strrchr($file, "/"), 1) は$fileがpathも含まれるためpathを取り除いている
true はファイル名であることを明示
UTF-8はgmailの仕様

参考にさせていただいたサイト
PEAR::Mail_mimeで日本語ファイル名の添付ファイルを送る方法
https://koyhogetech.hatenablog.com/entry/20120404/mailmime

mb_substr(mb_strrchr($file, "/"), 1) は
ファイル名などに日本語が含まれるパスでbasename関数が失敗するバグ
https://php1st.com/1434

ありがとうございました。

久しぶりにphpMyadminをアクセスしたら「HTTP ERROR 500」になった。
エラーログは
PHP Fatal error:  require_once(): Failed opening required '/usr/share/php/gettext/gettext.inc' (include_path='.:/usr/share/pear') in /var/www/html/phpmyadmin/libraries/select_lang.lib.php on line 477

解決策は
yum --enablerepo=epel install php-php-gettext

動いた!

バリューサーバーからpearを使ってメール送信を試みたが上手く動作しない。やっと解決したのでメモ。

まずバリューサーバーのphpの動作モードを確認。


モジュール版を確認



phpの動作モードがモジュール版の場合、Document root ディレクトリーに.htaccessを置き下記を記述した。

php_value sendmail_from "your_name@your_domain"
php_value SMTP "s7.valueserver.jp"
php_value smtp_port "587"


phpinfoで反映を確認

これで正常にメール送信ができた。

参考サイト:
http://wxiaoy.com/category10/entry76.html
https://www.gesource.jp/weblog/?p=283

サーバーを替えてしばらく過ぎてメール送信の不具合に気付いた。
$mailObject = Mail::factory("smtp", $params);
の部分でエラーが出ていたようだ。

smtpを使用するには、Net_SMTP 関連パッケージが必要らしい。何度もpearをインストールしているが、このケースは初めてだ。

# pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.11 stable
Auth_SASL 1.0.6 stable
Console_Getopt 1.3.1 stable
Log 1.12.9 stable
Mail 1.2.0 stable
Mail_Mime 1.10.0 stable
Mail_mimeDecode 1.5.5 stable
Net_SMTP 1.7.1 stable
Net_Socket 1.0.14 stable
PEAR 1.9.4 stable
Structures_Graph 1.0.4 stable
XML_Util 1.2.1 stable

やっと動いた。