phpでファイルの更新時間を取る

phpでファイルの更新時間を取るには

があります

filectimeはinode変更時間をとるので、権限の変更とかも変更時間が変わります
filemtimeはファイルが書き換えられたら、変更時間が変わります

こんなコードで試してみました

<?php
$unix = filectime('./sample');
var_dump(date('Y-m-d H:i:s', $unix));
$unix = filemtime('./sample');
var_dump(date('Y-m-d H:i:s', $unix));

phpのbasenameはロケール次第で日本語が扱えない

はまったのでメモ

ファイル名をとれる関数 basename を使って

$path = "/var/www/upload/日本語ファイル.txt";
echo basename($path);
// .txt

日本語ファイル.txtが出てきて欲しいのに、日本語部分が消えてしまいました

公式マニュアルの出番です
http://php.net/manual/ja/function.basename.php

ロケールに依存するらしい..

いまのロケールを見てみます

echo setlocale(LC_ALL, 0);
// C

Apacheのロケール、Cを引き継いでるっぽいです

setlocale(LC_ALL, 'ja_JP.UTF-8');
$path = '/var/www/upload/日本語ファイル.txt';
echo basename($path);
//日本語ファイル.txt'

で取れました
Apacheの設定変えてもいいかもしれません

PHPでメールを送る

借りているレンタルサーバーのPHPプログラムからメールが送られてなかったのでテストのため簡単にPHPでメールを送ってみました

mb_send_mailコマンドを使いました
http://php.net/manual/ja/function.mb-send-mail.php

<?php

mb_language("Japanese");
mb_internal_encoding("UTF-8");

if (mb_send_mail("sample@sample.co.jp", "テストメール", "これはテストです。", "From: from@example.com")) {
    echo "メールが送信されました。";
} else {
    echo "メールの送信に失敗しました。";
}

mailコマンドのラッパーコマンドです
http://php.net/manual/ja/function.mail.php

レンタルサーバーがどうやってメールを送っているか確かめる必要があります

mailコマンドか、sendmailを使っているか、どこかのメールサーバーを使っているか
などあるかと思います

「 Call to undefined function curl_init() 」エラーの回避法

Ubuntu 14.04 + Apache + PHP で開発中、エラーが発生

PHP Fatal error: Call to undefined function curl_init() in xxxx

phpでcurlが使えないようです

インストールします
$ sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

Apache再起動
$ sudo service apache2 restart

これで有効になりました