ノートPCのSSDが死んだ→外付けSSDに構築

イメージ
 これは、友人の話ですが…。 個人で使用しているノートPCが、「起動しなくなった」という相談を受けて、調査。 確かにBootしない。一応、USBでUbuntu起動して確認するも、Diskは存在しているものの中身は見えなくなっている。 かなりのセクタがお亡くなりになっている…。 本人曰く、基本的にデータは保存していないので、初期化しても何も問題はない (PC使用していてそんなこと有る?全部クラウド利用?) まぁ、そう言うなら復旧できるかやってみることに。 フォーマットもできず… 結局、データのレスキューも、初期化もできず… 仕方なくBIOSでDisableに設定するしか手がない状態。 ノートPC自体は壊れていないが、SSDのみ逝っている状態。 もちろん修理に出すことも可能だが、保証期間はとっくに過ぎている。 USBタイプ外付けSSDで再構築 Rufusを使用すれば、USBメモリにOSをインストールできるのは知っているが、通常のUSBメモリだと遅いのと壊れるのが心配なので、SSDを選択。 探してみると、結構良いものが有る。 ロジテック SSD 外付け 500GB  当時6,200円(2025年春)→現在約11,500-(2026年2月) Type-AとType-Cのどちらも使用可能。 これに、 Rufus を使用してWindows11をインストール。 手順は、あちこちに出回っているが、分かり易そうなところも紹介 https://nisimura.org/usb_ssd_rufus_win11_24h2/ これとWindows11homeのライセンス代をもらって完了。 起動は結構早いし、持ち運べるのは良さげ。 自分用に1個作成しておいても良いかも。 出先でPCさえ借りれれば、自分の環境&ツールがそのまま使用できるわけだしね。 あっ、Windowsはほぼ使用していないから不要だったゎ(笑)

久々のPHPでハマる…。

長いこと使ってますが…

web系のスクリプトは、perlから始まりrubyとPHP4に手を出して、長いこと経ちます。もちろん、perl時代が長かったわけで、phpを経てrubyに慣れたものの、またphpに手を出したら、またperl文法に戻ってしまって…。行きつ戻りつを繰り返しているような錯覚を覚えてます。

で、今回は充分自宅環境でテストをして、動作確認をしたスクリプトを持っていったのはいいが、どうも動作しない。
どれだけ待ってもTIME OUTするじゃない…。
まあ、いつもは書かないけれど、デモンストレーションとして書いたものが…。
「fopenでURLを叩いても、ローカルファイルを叩いても、wrapperが同じように処理してくれるのよ〜」なんて説明をしたくて、用意したのに外部へ見に行くとタイムアウト。
仕方なく、ローカルネットワークで試すとOK。

そういうことですか…。外部はダメで、ローカルはOKとな…。もちろん自宅ではLocalhostと外部はテストしてありOKなんだけど…。
ちがいはproxyしかない。

proxy通してやるじぇ

そこまで分かれば簡単や〜とばかりに、システムのproxy設定を見る。
「はて?設定されとる」そうか、環境変数に書かれてないんだな。
と思い、
$ set | grep proxy
確かに、何も設定されていない。そうかそうか…。いひひ…。
$ export http_proxy=http://172.…:3128
export  ftp_proxy=http://172.…:3128
いつもの奴や…。と思いつつついでにftp側も設定。wget叩いたりして、ええやん!
「これで、満足したやろ!phpめ〜」と声には出さずに叫びつつ、スクリプトをブラウザから叩く。


しょんぼり

た、タイムアウト〜! 心のなかはアウト〜!
なぜだ…。そか、php5の設定か?と思いつつ、ググってみる。
php5.iniを確認し、allow_url_fopenをチェック。問題ない。
はぁ…と思ったら、fopenのwrapperはproxy非対応って…orz


PHPのManualページの下の方に、proxy使う場合はfsockopenで叩けみたいに書いてあるじゃんか…。
そういう仕様ですか…そうですか…。

<?php
/*************start code**************/
/*your proxy server address*/
$proxy = "192.168.10.1";
/*your proxy server port*/
$port = 8080;
/*the url you want to connect to*/
$url = "http://www.php.net/";
$fp = fsockopen($proxy, $port);
fputs($fp, "GET $url HTTP/1.0\r\nHost: $proxy\r\n\r\n");
while(!feof($fp)){
  $line = fgets($fp, 4000);
  print($line);
}
fclose($fp);
/**************end code**************/
?>
こんだけかいな…。これくらいならproxy対応しておいてくれよ〜。
結局、proxyサーバに直にリクエスト出してるだけだし…。

結局のところ
なれぬ手法を紹介しようとしたことが、第一の敗因。
そして、システム側が設定されていれば、上に乗ってる言語は対応しているだろうという思い込み。
最後に、全く同じテスト環境を用意できないこと…。

ちうことにしておこう。
どうせまた、忘れてしまうやろうし、こしょっと書いておけば、いつかまた会えるだろうw



コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

VirtualBoxが異常

MEGAにも弱点があった?