PCの調子がおかしい

 マルチメディア(死語)サーバとして使っているShuttleのXS36V5だが、動画サイトを見るとクラッシュするようになった。Google ChromeでもFirefoxでも同様。

 メモリの不調を疑い、memtest86+を走らせてみたが完走。ならばと再インストール。だがインストールを完走できない。コピーの途中で止まってしまう。前回うまくいったHDDクリア法でも同様。

 次に疑ったのはHDD。

続きを読む

thunarのアクションで与える引数の挙動

 昨日の続き。

 普通の場合は特に気にすることはないが、ファイル名にスペースが含まれると挙動がおかしくなる。

 こんなphpスクリプトを作って、実行権限をつけて引数%Fを与えるよう設定し、2つのファイルを選択して右クリックメニューから実行してみる。ファイル名は"/tmp/Screenshot 2.png"と"/tmp/Screenshot 1.png"。

#!/usr/bin/php
<?php
$file='nanchara.txt';
array_shift($argv);
file_put_contents($file, $argv);
?>

 ダブルクオーテーションで囲んだ場合。

続きを読む

escapeshellarg

 phpでsyncthingサーバの新しいファイルをローカルにコピーするスクリプトを作っていたけど、一部のディレクトリでコピーできていない。ログを取るようにして原因発見。Androidのコラージュ作成ソフトが作成するファイルの名前にスペースが入っていたせいだった。
 いったんは$filename=str_replace(' ','\\ ',$filename);したけど、ちょっと検索してescapeshellargという関数があるのを発見。こりゃ便利だ。

 とはいえ、外部コマンドを呼び出すときはクォテーションで囲って、phpの関数に渡すときははずさないとうまくいかない。諸悪の根源はファイル名にスペースを入れるAndroidアプリだけど。