apad専門店
aPadとは、android pad略です。
触れるお店が、秋葉原にできたのはびっくりです。
早速行ってみましたが、アットホームなお店で驚きました!
こんなにたくさんのaPadがあるんだなぁと思いました。セミナーも開催されているようで、自分みたいな開発者にはいいお店です!
空メール、暴走 !!
前回説明した、空メールが暴走しました。
理由は、簡単なことでした。
.forwardの設定で、送ってきたメールの内容をプログラムに渡す処理をしています。
その際、どんなメールでも健気に転送してプログラムが動きます。
ここで、ある問題が発生してしまいました。
無限ループ
エラーが発生したときなどは、ユーザーあてにメールを送ります。
そいつが、またメールを送り、またエラーになり、またメールを送り....
約1日以上動いていました。
でも、不思議とサーバーは落ちませんでした。だから気づくのが時間がかかってしまいました。
改善策としては、エラーメッセージを送らせないようにするかまたは、プログラムの方でローカルからのメールの場合はメールを送ることをやめるという処理を追加してあげればいいと思います。
というよりは、そういう処理を今日追加してみました。
直るといいんですが...
空メール .forward設定 php
空メール .forward設定 php
3日間悩んだので、記録を残しておきます。
まず、空メールの機能を実行するには .forward、aliasesに転送の登録をします。
転送の登録
1、.forwardに登録
"|/usr/bin/php /var/www/html/test.php"
2、そして、曲者smrshっというやつを停止するか、そこにtest.phpを登録するかする。
3、test.phpのスクリプトの先頭に
#!/usr/bin/php -q と書いてから <?php ~ phpのプログラムをはじめる。
上の意味は「このtest.phpのファイルは/usr/bin/phpをインタ-プリタする」という意味になるらしい。
まぁ、ここらへんは自信ありません。
4、最後にtest.phpの属性を755に変える。
これで僕は、できました。
困ったときは、ログを見ましょう。
見る方法: /var/log/maillog
また、.forwardっていうのの属性は704です。
デフォルトでそうなってるはずだけど、念のため。
三日間の格闘のとき、いろいろと質問をしている人たちの戦いを見させてもらったので僕も
愛を込めて、エラーログの一覧を残します。
1、sh: line 1: /var/www/html/test.php: Permission denied
554 5.3.0 unknown mailer error 126
2、sh: /var/www/html/test.php: /usr/local/bin/php: bad interpreter: No such
file or directory
3、 ----- Transcript of session follows -----
Error in argument 1, char 3: option not found
Error in argument 1, char 4: option not found
Error in argument 1, char 3: option not found
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
php <file> [args...]
-a Run interactively
-C Do not chdir to the script's directory
-c <path>|<file> Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f <file> Parse <file>. Implies `-q'
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-q Quiet-mode. Suppress HTTP Header output.
-s Display colour syntax highlighted source.
-v Version number
-w Display source with stripped comments and whitespace.
-z <file> Load Zend extension <file>.
554 5.3.0 unknown mailer error 1
あきらめなければ、できます。
新しいファイルを作る、パーミッション確認
myAlubum-pからお送りします。
// check file_uploads = on
if( ! ini_get( "file_uploads" ) ) $file_uploads_off = true ;
// get flag of safe_mode
$safe_mode_flag = ini_get( "safe_mode" ) ;
// check or make photos_dir
if( ! is_dir( $photos_dir ) ) {
if( $safe_mode_flag ) {
redirect_header(XOOPS_URL."/modules/$mydirname/",10,"At first create & chmod 777 '$photos_dir' by ftp or shell.");
exit ;
}
$rs = mkdir( $photos_dir , 0777 ) ;
if( ! $rs ) {
redirect_header(XOOPS_URL."/modules/$mydirname/",10,"$photos_dir is not a directory");
exit ;
} else @chmod( $photos_dir , 0777 ) ;
}
解説
php.iniの設定がアップロード可か、セーフモードかを調べる。
次にファイルがあるかを確認。
ない場合はファイルを作成しています。
0777と四桁にしないとだめです。
ちょっとした疑問ですけど、一度0777でパーミッションを設定しているのに、もう一度chmodで0777に設定するのだろうか。
なにか、理由があると思うけど。
// check or set permissions of photos_dir
if( ! is_writable( $photos_dir ) || ! is_readable( $photos_dir ) ) {
$rs = chmod( $photos_dir , 0777 ) ;
if( ! $rs ) {
redirect_header(XOOPS_URL."/modules/$mydirname/",5,"chmod 0777 into $photos_dir failed");
exit ;
}
}
パーミッションのチェック。
allow_url_fopen
allow_url_fopen php 意味
php,iniで、fopen()でURLを指定することのできるようにするディレクティブです。
「allow_url_fopen = On」とすると、fopen()ではローカルファイルだけでなく、URLで指定したインターネット上のファイルにもアクセスできます。
ただ、セキュリティ的にまずいこともあります。
たとえば、URLのクエリで、includeするファイルを決めているプログラムがある場合えらい目にあいます。
URLのクエリのパラメータをちゃんと確認しておかしければ、エラーにしとけば問題ないのだろうが、穴が開いてしまうことがあるらしい。
ようは、外部のわるい人が作ったプログラム(外部のURLの)をまわされちゃったらえらいこっちゃってこと。
ちゃんと、確認してね(アコム風)