新しい iPhone は type-c 端子なので、これまでのようにケーブルを使って写真をコンピュータにコピーすることができません。
そのためだけに、対応のケーブルや端子を購入するのも面倒ですし、そもそもケーブルを接続して写真をコンピュータにコピーするのは面倒です。
例によって chatGPT に相談したのですが、最初のうちは動かない samba をインストールさせられたりしていました。
でも、linux mint で apache + php 環境は構築してあるので php を使ってファイルをアップロードするのが最も簡単だと気づいてあっという間に解決しました。
コマンドラインから写真保存用のディレクトリを作成します。
mkdir -p /var/www/html/iphone_upload/uploads以下のようにしてパーミッションを変更します。
cd /var/www/html/iphone_uploadsudo chown -R www-data:www-data uploadssudo chmod -R 775 uploads以下のような php を作成します。
<?php// アップロード先のベースフォルダ$base_dir = "uploads/";date_default_timezone_set('Asia/Tokyo'); // タイムゾーン設定
// アップロード日時でフォルダ分け$today = date("Y-m-d");$target_dir = $base_dir . $today . "/";if (!file_exists($target_dir)) { mkdir($target_dir, 0777, true);}
// アップロード処理$messages = [];if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['fileToUpload'])) { foreach ($_FILES['fileToUpload']['name'] as $key => $name) { $tmp_name = $_FILES['fileToUpload']['tmp_name'][$key]; $error = $_FILES['fileToUpload']['error'][$key];
if ($error === 0) { $target_file = $target_dir . basename($name); if (move_uploaded_file($tmp_name, $target_file)) { $messages[] = "Upload successful: " . htmlspecialchars($name); } else { $messages[] = "Failed to move file: " . htmlspecialchars($name); } } else { $messages[] = "Error uploading file: " . htmlspecialchars($name) . " (Error code $error)"; } }}?>
<!doctype html><html lang="ja"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>iPhone Upload</title><style>body { font-size:18px; font-family:Arial,sans-serif; padding:20px; }h1 { font-size:24px; }input[type=file] { font-size:16px; padding:10px; margin-bottom:10px; width:100%; }input[type=submit] { font-size:16px; padding:10px 20px; }.message { margin-top:10px; font-size:16px; color:green; }.error { margin-top:10px; font-size:16px; color:red; }</style></head><body><h1>Upload Files</h1>
<?phpif (!empty($messages)) { foreach ($messages as $msg) { $class = strpos($msg, 'successful') !== false ? 'message' : 'error'; echo "<div class='$class'>$msg</div>"; }}?>
<form method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload[]" multiple accept="image/*,video/*"><br> <input type="submit" value="Upload"></form>
</body></html>iphone で写真を撮るとサイズは 2.2 MB ありますが、php のデフォルトでは 2 MB が最大となっているので upload_max_filesize を変更する必要があります。
php.ini から upload_max_filesize を変更するのですが、少しややこしいのは PHP の CLI と Apache モジュール(mod_php)のバージョンが違う場合があることです。
コマンドラインから、
php -v
PHP 8.4.14 (cli) (built: Oct 27 2025 20:53:56) (NTS)で php 8.4 なのに、info.php では 8.3 ということがありえます。
Apache の方を使うので、php 8.3 の php.ini を変更する方が簡単ですが、chatGPT は php 8.4 を Apache に設定する方法を提示してきました。
現在の PHP モジュールを無効化:
sudo a2dismod php8.3PHP 8.4 モジュールを有効化:
sudo a2enmod php8.4Apache を再起動:
sudo systemctl restart apache2以下のような php プログラムを作って確認します。
<?phpphpinfo();http://192.168.0.9/iphone_upload/info.php
php.ini を編集します。
sudo nano /etc/php/8.4/apache2/php.ini以下のように設定。
upload_max_filesize = 20Mpost_max_size = 20Mapache 再起動。
sudo systemctl restart apache2iphone の safari から linux mint の local host にアクセスします。
http://192.168.0.9/iphone_upload/
複数の写真をアップロードすることもできます。
動画もアップロードできますが、大きな動画の場合は upload_max_filesize を変更する必要があります。
iphone 16e で撮った写真です。
以前の iphone 7 の写真は、
こちらの方は色が少しおかしいですね。
やはり、iphone 16 の方が美味しそうです。
iphone のテザリングでは少し工夫が必要なようです。
例によって ifconig で確認すると、
ifconfig
enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.9 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::7d76:43ae:1178:282d prefixlen 64 scopeid 0x20<link> ether a4:bb:6d:3d:96:1e txqueuelen 1000 (イーサネット) RX packets 2707 bytes 184449 (184.4 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 132 bytes 20525 (20.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 19
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (ローカルループバック) RX packets 10387 bytes 6208259 (6.2 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 10387 bytes 6208259 (6.2 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.20.10.4 netmask 255.255.255.240 broadcast 172.20.10.15 inet6 2001:268:7230:92fc:b147:92a2:4691:29a2 prefixlen 64 scopeid 0x0<global> inet6 2001:268:7230:92fc:cd78:843f:b819:2c2f prefixlen 64 scopeid 0x0<global> inet6 fe80::d450:d8c1:9593:30a5 prefixlen 64 scopeid 0x20<link> ether e8:6f:38:93:65:e3 txqueuelen 1000 (イーサネット) RX packets 330724 bytes 416602984 (416.6 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 195798 bytes 24589502 (24.5 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0これって、おそらく有線でつながっている時は「192.168.0.9」で無線の場合は「172.20.10.4」なんだろうと思います。
でも、有線で繋がっていれば php を作らなくても画像をコピーできます。
で、「172.20.10.4」でアクセスしたら画像をアップロードできました。
写真・動画ファイルとさらに音声ファイルもクラウドを使わずにコンピュータにアップロードします。
php プログラムをちょっと変えるだけです。
<input type="file" name="fileToUpload[]" multiple accept="image/*,video/*"><br>を以下のように変更すればOKです。
<input type="file" name="fileToUpload[]" multiple><br>これで、写真・動画・音声ファイルをすべて無線でクラウドを使わずに自宅のコンピュータにコピーすることができるようになりました。