ちゃんと覚えておけよ?

忘れちゃいけない事のメモ、覚え書き

jQueryで追加したclickイベントがiPhone/iPadのSafariでだけ動かない場合の対処法

タグをボタン代わりにclickイベントを行おうとしたが、iOSだけどうさせず、色々調べた結果、スタイルシートのボタンとして使う部分に以下を追加したところうまく動作した。

cursor:pointer;

絶対にまた遭遇するので覚えておかないと。。。

nginx connect() to unix:/var/run/php-fpm/php-fpm.sock failed (13: Permission denied) while connecting to upstreamのエラーが出た時の対処法

ある日nginxをrestartしたら、PHPのページが読めなくなった。

logを見ると以下のようなエラーログが書かれていた。

nginx connect() to unix:/var/run/php-fpm/php-fpm.sock failed (13: Permission denied) while connecting to upstream

調べてみると、どうやらパーミッションがおかしいらしい。

PHPのfile_get_contents()でユーザエージェントを偽装する

$options = array(
'http' => array(
'method' => 'GET',
'header' => 'User-Agent: DoCoMo/2.0 P903i(c100;TB;W24H12)',
),
);
$context = stream_context_create($options);
$url = 'https://test.com/';
$contents = file_get_contents($url, false, $context);
print $contents;

上ではガラケーに偽装していますが、User-Agent:の部分を、iPhoneにする場合は以下に変更
■iOS6
Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25

こうすることで、スマホのページをfile_get_contetns出来ます。

nginxのキャッシュをコマンドで削除する方法

自分の環境だとこういった感じでディレクトリがある。

/var/cache/nginx/cache1/<\pre>

以下コマンドでcache1内のディレクトリを確認
ls

0 1 2 3 4 5 6 7 8 9 ...
のようにcacheディレクトリができているので、cdでcache1まで移動し、

#cd /var/cache/nginx/cache1/

↓のように消すディレクトリを指定して実行する。

sudo rm -rf 0 1 2 3 4 5 6 7 ...

iOS7になってアドレスバーが隠せなくなったがビューポートで対応できた。

それまでは、
scrollで0にしてアドレスバーを隠していたが、iOS7からAndroid4以降のmobile chrome同様に効かなくなってしまった。

だがしかし、どうやら、viewportに「minimal-ui」を追加することでアドレスバーと下に表示されるメニューバー?ツールバー?を隠すことが出来るようになるようです。

実際にはアドレスバ-を完全に非表示にすることはできないのですが、最小限小さくすることができ、。下にあるツールバー領域も最初から非表示になります。
minimal-uiの時にメニューを表示させた場合はURLバーの部分をタップすると、アドレスバーと下のツールバーが表示されるようになります。

他のサイトで使用しているところが少ないため、ユーザーストレスにならないことを願う。

php.iniでセッションを有効にして使うまで

php.iniの中から「session.save_path」を探して、パスを入れる。

自分の環境だとこう

session.save_path = "/var/lib/php/session"

でapacheまたはnginxを再起動して
上のパスに書き込み権限を与える。

chmod 777 /var/lib/php/session

最後にちゃんとセッションを引き渡せるかテストをしてみた。

test.php

session_start();
$_SESSION['test'] = "こんにちは";
確認

test2.php

session_start();
echo $_SESSION['test'];

これでtest2.phpに「こんにちは」と表示されれば、うまくいった証拠