PHPでYahooにログイン出来なくなった
URL上にファイルが存在するかチェックする
どこを参考にしたか忘れました。
単純で簡単そうだったのでこの方法にしました。
<?php $header = get_headers($url); if ($header[0] != "HTTP/1.1 404 Not Found") { echo "そのファイルは存在します。<br />"; } else { echo "そのファイルは存在しません。<br />"; } ?>
WEB上のファイルをダウンロードする
画像をダウンロードするのに必要になりました。
画像以外のダウンロードが出来るか分かりません。
PHP逆引きレシピを主に参考にしてます。
<?php function downloadWebFile($url, $filename, $dir) { # 保存するファイル名を設定します。 $fileName = $dir.$filename; $fileData = file_get_contents($url); # ファイルを追記モードで開きます。 $fp = fopen($fileName, 'ab'); # ファイルをロックします(排他的ロック)。 flock($fp, LOCK_EX); # ファイルの中身を空にします。 ftruncate($fp, 0); # データを書き込みます。 fwrite($fp, $fileData); # ファイルを閉じます。 fclose($fp); } ?>
PHPからFTPアップロードする
2017/06/19追記
touki/ftp - Packagist などライブラリを使ったほうが良いと思います。
ここPHP: ftp_put - Manualといくつか参考にした。
<?php $ftp = array( 'ftp_server' => '<FTPサーバー>', 'ftp_user_name' => '<FTPユーザー名>', 'ftp_user_pass' => '<FTPパスワード>' ); $remote_file = '<アップロード先のパス>'; $file = '<アップロードするローカルファイル>'; function FTPupload($ftp, $remote_file, $file) { // 接続を確立する $conn_id = ftp_connect($ftp['ftp_server']); // ユーザ名とパスワードでログインする $login_result = ftp_login($conn_id, $ftp['ftp_user_name'], $ftp['ftp_user_pass']); // ファイルをアップロードする if (!ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) { echo "There was a problem while uploading $file\n"; exit; } // 接続を閉じる ftp_close($conn_id); } ?>
apiを利用してPHPでbit.lyの短縮URLを作る
TwitterのBOTをつくるのに必要になりました。
id:riku_kn:20101113:1289660088の内容そのまま拝借しました。
id:riku_knさんお世話になりました。
<?php function shortenUrl($url) { $username = '<ユーザー名>'; $apikey = '<APIキー>'; $bitly_url = "http://api.bit.ly/shorten?version=2.0.1&login=" .$username; $bitly_url .= "&apiKey=" .$apikey; $bitly_url .= "&longUrl=" .$url; $bitly_url .= "&format=xml"; $XML = file_get_contents($bitly_url); $XML = simplexml_load_string($XML); return (string)$XML->results->nodeKeyVal->shortUrl; } ?>
chmodでパーミッション変更できない場合
PHPにももちろんパーミッションを変更する関数はある*1。ところがこれでエラーになる場合がある。
PHPのchmodでエラーになる場合
<?php // パーミッションを0666へ変更する。 chmod ('hoge/hoge.php', 0666); // ところが以下のようなエラーになる場合がある。 //Operation not permitted ?>
原因は実行する側の権限の問題。いろいろ調べた結果、systemという関数を使用した*2。スマートではないけどレンタルサーバーでSSHアクセス出来ない場合はこれしか方法がないのかなぁ、という感じ。
対策方法
<?php // 使用しているサーバーでchmodコマンドが使えることが前提 system('chmod 666 ./hoge/hoge.php');exit; ?>
備考
相変わらずスマートさにかける・・・。