月別アーカイブ: 2022年12月

Permission denyを解決した話(エラー対処録:scpコマンドの失敗)

経緯

プラグインのHighlighting Code Blockのprism.cssとprism.jsをローカルからさくらのVPSにscpコマンドで送ろうとしたら・・・

ユーザー名@IPアドレス: Permission denied (publickey).
lost connection

前提

ポートは22ではなく55555のみ開けています(あくまでも例)

ユーザー名1はMacのユーザー名

ユーザー名2はさくらのVPSで作成したユーザー名

IPアドレスはブログのIPアドレス

やったコマンド

scp -P 55555 -i ~/.ssh/id_rsa /Users/ユーザー名1/Downloads/prism.css ユーザー名2@IPアドレス:/var/www/wordpress/wp-content/themes/twentytwenty

普通に55555ポートに公開鍵認証でログインできているのに送れないのはおかしい・・・

解決できた方法

送り先の権限を変更する(chmod)

さくらのVPSにログイン

scp -P 55555 -i ~/.ssh/id_rsa ユーザー名@IPアドレス

送りたいディレクトリまで移動する

cd /var/www/wordpress/wp-content/themes/

権限を変更する

sudo chmod 707 twentytwenty

scpコマンドで送る

scp -P 55555 -i ~/.ssh/id_rsa /Users/ユーザー名1/Downloads/prism.css ユーザー名2@IPアドレス:/var/www/wordpress/wp-content/themes/twentytwenty

↓のような実行文があればscpコマンドが成功しています。

100% 569KB 3.4MB/s 00:00

※注意
適切な権限に戻すことを忘れないように!

 

PHPプログラミングノート7(組み込み関数3)

組み込み関数についてまとめる

ファイル操作(取得・保存・ベースネーム・ディレクトリパスを返す・絶対パスを返す)

file_get_contents() 

ファイルの内容をすべて取得する。また、URLを指定してウェブサイトのソースを取得することもできる。 

file_put_contents() 

文字列をファイルとして保存する。 

basename() 

ファイルやディレクトリのパスから最後にある名前の部分を返す。 

dirname() 

ファイルパスからディレクトリパスを取り出して返す。

dirname(__FILE__) とすることで実行中のPHPファイルのあるディレクトリを得ることもできる。 
これは「__DIR__」と同義。 

realpath() パスの「/./」や「/../」「/」などの参照を全て解決して正規化した絶対パスを返す。

ファイル操作(ファイルが存在しているか?・F、URLオープン・ファイルロック・1行取得・スプリットして取得)

file_exists() 

指定されたファイルパスにファイルが存在するかを調べて返す。 

fopen() 

ファイルやURLをオープンしてストリームに結びつける。 

flock()

fopen()によってオープンされたファイルのロック・開放を行う。 

fgets() 

ファイルポインタから一行取得する。 

fgetcsv() 

ファイルポインタから一行取得し、指定された文字をもとに区切られた配列を返す。

ファイル関連(fopen() によってオープンされたファイルを書き込み・クローズ・ファイルポインタの位置を先頭に戻す。内容を指定した長さに丸める)

fwrite() 

fopen() によってオープンされたファイルストリームに書き込む。

fclose() 

fopen() によってオープンされたファイルポインタをクローズする。 

rewind() 

ファイルポインタの位置を先頭に戻す。 

ftruncate() 

fopen() によってオープンされたファイルの内容を指定した長さに丸める。 
サイズに 0 を指定することでファイルを空にできる。

ファイル関連(ポインタが終端にいるかどうか?・HTTP POSTでアップロードされたかどうか・←真の時指定されたファイル名に移動する)

feof() 

ファイルポインタが終端に達しているかを調べて返す。 

is_uploaded_file() 

ファイルが HTTP POST によりアップロードされたファイルであるかを調べて返す。 
不正操作を防ぐために用いられる。

move_uploaded_file() 

ファイルが HTTP POST によりアップロードされたファイルである場合、指定されたファイル名に移動する。

ファイル関連(mkdir・ファイル削除・リネームや移動・コピー・ファイルかどうか?・ディレクトリかどうか?・chmod・chown)Linuxと同じコマンドあり

mkdir() 

ディレクトリを作る。パーミッションを設定したり入れ子構造のディレクトリを作ることもできる。 

unlink() 

ファイルを削除する。 

rmdir() 

ディレクトリを削除する。

rename() 

ファイル名を変える。ファイルを移動する。 

copy() 

ファイルをコピーする。 

is_file() 

指定されたパスがファイルを指しているかを調べて返す。 

is_dir() 

指定されたパスがディレクトリを指しているかを調べて返す。 

chmod() 

ファイルのパーミッションを変更する。 

chown() 

ファイルのオーナーを変更する。

ネットワーク(特殊文字をエスケープ・生HTTPヘッダーを出力・改行タグ変換・HTML タグを取り除く・連想配列からURLエンコードされたクエリ文字列を生成)

htmlspecialchars() 

HTMLの特殊文字として扱われる文字をHTMLエンティティに変換する。
(エスケープ)「<」などは「<」に変換され、HTMLタグとして扱われることを防げるほか、 
不正なスクリプトタグを仕込まれて実行されるリスクを回避できる。 
大抵は「ENT_QUOTES」フラグを用いてシングルクォートも変換対象にする。 

header() 

生の HTTP ヘッダーを出力する。 
「HTTP/1.0 404 Not Found」などのステータスコードを出力したり、
「Content-Type: image/jpeg」などのファイルヘッダーを出力することができる。 
「Location: http://www.example.com」とすることで指定された 
URL にリダイレクトする際にも用いられる。
 
nl2br() 

文字列の改行箇所を「<br>」などの改行タグに変換する。 

strip_tags() 

文字列から HTML タグを取り除く。 許可するタグを指定することもできる。 

http_build_query() 

連想配列からURLエンコードされたクエリ文字列を生成する。 
つまり配列を GET パラメータとして使える「foo=123&bar=hello」のような文字列に変換できる。

(URLとして利用できる文字列に変換・GET、POSTなどのパラメータをフィルタリングしたうえで受け取る・指定したフィルターでデータをフィルタリングする。・セッションを開始する。セッションハイジャック攻撃を防ぐ・セッション情報を全て破棄する・クッキーに値を保存する。)

rawurlencode(), rawurldecode() 

rawurlencode() は非アルファベット文字をパーセント記号と16進数を用いて 
URL として利用できる文字列に変換する。 
rawurldecode() によって元の文字列を復元できる。 

filter_input() 

GET、POST などのパラメータをフィルタリングしたうえで受け取る。 
$_GET、$_POST を直接操作するかわりにこの関数を通す。 

filter_var() 

指定したフィルターでデータをフィルタリングする。 
データがメールアドレスとして正しい書式であるかを調べたり、
特殊文字を取り除いたりするなど、様々なフィルタが利用できる。 

session_start() 

セッションを開始する。セッションIDを渡すことで現在のセッションを復帰することもできる。 

session_regenerate_id() 

セッションの情報を位置したままセッションIDを新しく生成した値に置き換える。
 セッションハイジャック攻撃を防ぐ手段として用いられる。 

session_destroy() 

セッション情報を全て破棄する。再開するには再度 session_start() する必要がある。 

setcookie() クッキーに値を保存する。有効期限を設定することもできる。

ハッシュ関連(ハッシュ値を生成する・MD5を使いハッシュ値を生成する・擬似乱数ハッシュ値を生成する・MIMEbase64でエンコード・デコードする・JSON形式で返したり・JSON→連想配列にする・マルチバイト文字に基づいたエンコード変換をしてメール送信)

hash() 

選択したアルゴリズムに基づいてハッシュ値を生成する。

md5() 

MD5 アルゴリズムを用いてハッシュ値を生成する。 

random_bytes() 

暗号論的に安全な疑似乱数生成器(CSPRNG)を使ったハッシュ値を作成。 

base64_encode(), base64_decode() 

文字列を MIME base64 方式でエンコード、デコードする。 

json_encode(), json_decode() 

連想配列を JSON 形式にして返したり、JSON 形式の文字列を連想配列に変換する。 

json_decode() を行う際第二引数に true を指定すると 
stdClass Object のかわりに連想配列に変換される。 

mb_send_mail() 

mb_language() により設定された言語に基づいてエンコード変換を行ってメールを送信する。

その他(ファイル読み込み・1つのみ読み込み・変数の内容表示・変数の詳細表示・
カウント・定数定義・)

require();
require_once();
include();
include_once(); 

別ファイルの読み込み。ファイル読み込めない場合にrequireはエラー、
includeは警告。_onceがついていると同名ファイルは1つのみ読込になる。
読み込む際は __DIR__ を使い絶対パスで指定する。 

print_r() 

変数の内容をわかりやすく表示する。 文字列に限らず連想配列も表示できるほか、
第二引数に true を指定することで結果を文字列として返すこともできる。 

var_dump() 

変数の内容を詳細にダンプする。 含まれるオブジェクトの型、内容を細かく知ることができる。
print_r() よりも詳細な内容を知りたい時に使う。 

count() 

配列やオブジェクトの要素数を数えて返す。 

define() 

定数を定義する。 大文字のアルファベットで名前をつける習慣がある。

その他(変数宣言されているか?Keyが存在するか?・空(0・Null、false)かどうか?・変数破棄・タイムスタンプ関連)

isset() 

変数が宣言されているか、配列にキーが存在するかを返す。 
内容が NULL であっても TRUE を返す。 
配列にキーが存在するかを調べる関数として array_key_exists() があるが、
そちらは ["key" => NULL] の場合 FALSE を返す。 

empty() 

変数の内容が空であるかを返す。空文字、「0」、空配列、NULL、FALSE などがからであると判断される。

unset() 指定した変数を破棄する。連想配列から一部のキーを取り除く際にも使える。 

time(), microtime() 現在のUNIXタイムスタンプを得る。 
1970年1月1日 00:00:00 GMT からの通算秒。 
マイクロ秒まで知りたい場合は microtime() を使う。

mktime()

時、分、秒、月、日、年 を指定することでその日時のUNIXタイムスタンプを得る。

date() 

UNIXタイムスタンプを日時を表す文字列としてフォーマットして出力する。
日時の取り扱いに関しては date() よりも DateTime クラスを利用するケースが増えている。
Carbonライブラリを使う事も多い。

PHPプログラミングノート6(組み込み関数)

文字列・数値の出力

echo() 

ブラウザに1つ以上の文字列を出力

printf(), sprintf()

文字列をフォーマットに当てはめて出力する。

printf() は出力を行い、sprintf() は結果を文字列として返す。

文字列・数値の一致、検索・正規表現による置換・エスケープ

preg_match(), preg_match_all() 

正規表現による一致・検索。
preg_match_all() はパターンにマッチしたすべての値を変数に格納する。 

preg_replace() 

正規表現による置換。パターンにマッチした文字列を指定した文字列に置換する。 

preg_quote() 

正規表現構文の特殊文字の前にバックスラッシュをつけてエスケープする。

正規表現(Regular Expression)の使い方

^ 行頭にマッチする \A

$ 行末にマッチする \z//

. 改行以外の任意の1文字にマッチする

[] 角括弧内の任意の1文字にマッチする

[A-Z] 英大文字A-Zの任意1文字にマッチする

[^] 角括弧内に含まれない1文字にマッチする

* 直前の表現を0回以上繰り返す

+ 直前の表現を1回以上繰り返す

? 直前の表現を0回または1回繰り返す

{n} 直前の表現をn回繰り返す。nは整数。

{n,m} 直前の表現をn回からm回まで繰り返す。n,mは整数。

a|b aまたはbにマッチする

[あ-ん] ひらがなの1文字にマッチする。

文字列の操作関連(置換・取り出し・小文字・大文字変換)

str_replace(), strtr() 

文字列の置換。
strtr() は複数の文字列のペアを渡して同時に置換できる。 

substr(), mb_substr() 

文字列の何文字目から何文字取り出すかを指定して文字列の一部分を返す。 

strtolower(), strtoupper() 

strtolower() はすべてのアルファベットを小文字に変換し、 
strtoupper() はすべてのアルファベットを大文字に変換する。

文字列の操作関連(バイト数・インデックス・文字コード変換・相互変換)

strlen(), mb_strlen()

strlen() は文字列のバイト数を返す。
mb_strlen はマルチバイト文字の文字数を返す。

strpos(), mb_strpos()

文字列の中から指定された文字列が何文字目に存在するかを返す。
大文字小文字を区別しない場合、stripos()、mb_stripos() が用意されている。

mb_convert_encoding()

文字列を指定された文字コードに変換して返す。

mb_convert_kana()

ひらがな・カタカナ、全角・半角を相互に変換する。

文字列・数値の操作関連(切り取り・ランダムに返す・型が(文字列・数値・浮動小数)かどうか・四捨五入・切り捨て・切り上げ

trim(), ltrim(), rtrim()

文字列の前後からスペースやタブなどの空白文字や指定された文字を取り除く。
trim() は前後から取り除き、ltrim() は左から、rtrim() は右からのみ取り除く。

mt_rand()

指定された範囲でランダムな数値を返す。(パスワード生成・トークン生成に使うのはNG。使うならrandom_bytes()。

is_string(), is_int(), is_float(),is_numeric()

与えられた値が文字列か、整数型か、float型(少数)、数値・文字列として扱えるか を返す。

round(), floor(), ceil()

round() は小数部分を四捨五入して返す。
floor() は小数点以下切り捨て、ceil() は小数点以下切り上げで丸める。
桁数を指定することで小数点以下何桁から丸めるかを変更できる。

配列関連(追加・結合・include?・配列かどうか?)

array_push()

配列に配列を追加する。

array_slice()

配列の何番目からいくつ取り出すかを指定して取得する。

array_merge(), array_merge_recursive()

配列同士を結合する。
array_merge_recursive() は再帰的に結合するため多次元配列でも使える。

in_array()

配列の中に指定された値が含まれているかを返す。

is_array()
渡された値が配列であるかを返す。

配列関連(特定カラムの配列作成・Keyと値の結合・マルチソート)

array_column()

多次元配列から特定カラムの配列をつくる。

array_combine()

2つの配列の一方をキー名、もう一方を値として、1つの配列に結合する関数です。

array_multisort()

複数の配列を他の配列の値をもとにソートする。

配列関連(重複削除・reverse・shift・pop)

array_unique()

配列から重複した値を削除して返す。

array_reverse()

配列の要素を逆順にして返す。

array_shift(), array_pop()

array_shift() は配列の先頭から要素を取り出し、

array_pop() は配列の末尾から要素を取り出す。
元の配列は取り出された分短くなる。

配列関連(関数を全要素に適用する・検索・concat・split)

array_walk(), array_walk_recursive()

ユーザー定義関数を配列中のすべての値に適用する。
arra_walk_recursive() は多次元配列に対して再帰的に処理する。

array_search()

配列の中から指定された値を持つ要素を検索し、見つかった場合そのキーを返す。

implode(), explode()

implode() は指定された区切り文字をもとに配列を文字列として結合し、
explode() は指定された区切り文字を元に文字列を配列に変換する。

配列関連(シャッフル・ソート(連想配列・キー・ユーザー定義関数含む)・range)

shuffle()
配列をランダムにシャッフルする。

sort(), rsort()
配列を昇順、降順でソート(並び替え)する。キーは新しく割り振られるため、もともとのキーは削除される。

asort(), arsort()
連想配列を昇順、降順でソート(並び替え)する。もともとのキーは保持される。

ksort(), krsort()
配列のキーをもとに昇順、降順でソートする。

usort(), uasort(), uksort()
ユーザーが定義した関数に基づいて配列をソートする。

range()
指定された範囲の整数・文字を持つ配列を作成する。

配列関連(リセット・配列のポインタを(すすめる・戻す・現在値を返す)・キー部分を変数名とする変数を作る。配列を引数として与えられた複数の変数に分けて代入する。)

reset(), end()
reset() は配列のポインタを先頭の要素のセットし、その値を返す。
reset() は配列のポインタを最後の要素のセットし、その値を返す。
実際には配列の最初や最後の要素を取得する目的で使うことが多い。

next(), prev()
next() は配列のポインタを進め、その値を返す。
prev() は配列のポインタを戻し、その値を返す。

current()
現在の配列のポインタが指す値を返す。

extract()
連想配列のキー部分を変数名とする変数を作る。

list()
配列を引数として与えられた複数の変数に分けて代入する。

 

変数・関数名に使える英語集

変数名や関数名に迷ったときや、意味について知りたかったときに見るもの

使用シーン:追加・作成するとき

set: 主にクラスのプロパティに値を代入する場合に用いる。

add: 追加。配列・リストにデータ、オブジェクトを加えるケースが多い。数値の加算もこちらを用いる。

put: こちらは連想配列(HashMap)などにキーを指定して追加するケースが多い。
あるいはストリームへ文字列を出力する。

insert: 配列・リストなどの任意の位置に挿入する。

append: 末尾に追加する。

prepend: 先頭に追加する。

register: 登録。一覧や名簿への登録。

make: 何かを加工することによって別の役目を持つものを作り出す。

generate: 何かを生成するときに用いる。

create: 新しく作る。データベースへの追加処理まで行うケースも有る。

build: クエリ、構文を組み立てる。

使用シーン:変数・関数名を保存・出力するとき

save: 保存。

store: 貯蔵する、蓄える。ストレージやデータベースへの保存。

export: 書き出し。形式を変換したり任意の形式で保存する。

output: 出力。

write: ファイル、ストリームへの書き込み。

show: 表示する。

render: 画像などを編集した結果を表示したり、項目を HTML などに変換した上で返す。

使用シーン:変数・関数名を検索・解析・取得するとき

get: データの取得。

load: ファイル全体を読み込む場合など。

import: ファイルを対応形式に変換して読み込む。

read: ファイル、ストリームから一行取り出す。

parse: 分解して解析する。XML を要素ごとに分ける場合など、何らかの区切りをもとに分析する。

request: データを要求する。

find: 情報の中から探し出す。見つかることが前提。

search: 情報の中に存在するか探してみる。

extract: 条件による抽出。

filter: フィルター。条件による除外。条件に合わないものを隠す。

seek: 連続したデータの中からあるデータが見つかるまで順番に探す。

fetch: (別の場所から)情報を取ってくる。

query: データベースなどの情報源からデータを引き出すためのルールや条件を指定する。

使用シーン:編集・変更・修正するとき

update: 情報の更新。

edit: データの書き換え。

modify: 部分的に修正する。改造。

change: 全く別の状態に変える。新しいデータで置き換えて古いデータは消滅する。

replace: 順序・文字の入れ替え。

join: データを前方又は後方に付け足す。

merge: 複数のデータを結合する。

normalize: 正規化。値を定められた範囲内に収めるなど、一定のルールに合うように加減する。

increase: 数値・数量を増加させる。

reduce: 数値・数量を減らす。

adjust: 値を調整する。何らかの目的に合うまで値を増減させる。

fix: 破損したデータを修復する。あるいは動かないように固定する。

restore: 元の状態に復元する。保管場所から取り除いたものを再度保管し直す(re + store)。

correct: 誤りのあるデータを正しく直す。

convert: 別の形式に変換する。

enable: 機能を有効にする。使用可能にする。

disable: 機能を無効にする。使用を停止する。

toggle: 状態を逆にする。有効であれば無効化し、無効であれば有効化する。

apply: 適用する。当てはめる。

使用シーン:削除するとき

delete: データの削除。通常は元に戻すことができない。

remove: データをリストや閲覧・アクセス可能な場所から取り除く。

erase: delete がデジタル色が強いのに対して、こちらは消しゴムでこすって消す場合などのアナログな用途にも使える。

clear: 中身を空にする。

destroy: 完全かつ確実なオブジェクトの破棄。後始末をしてもう二度と使えない状態にする。

unregister: 登録を解除する。

unset: セット済みのプロパティ、定義済みの変数をセット前、未定義の状態に戻す。

使用シーン:検証・検査 するとき

is~: オブジェクトが特定の型、状態であるか調べて true/false を返す。isEmpty, isValid のように状態を表す語と組み合わせて使う。

has~: オブジェクトが特定のプロパティを持っているかを調べて true/false を返す。権限、属性の所有を確認する。

contains: 配列に特定の値が含まれているかを調べて true/false を返す。

~exists: 項目の有無を調べる。

check: 広い意味での確認。validate が対象の正しさを検証するのに対し、check は対象が真か偽を調べたり、単に変数に何が入っているかを知るために使われる。

validate: 正しいものであるか確かめる。

verify: 正しく動作しているか確かめる。

使用シーン:許可・禁止するとき

allow: 許可する。
disallow: 許可しない。

accept: 申請・要求を承認する。受け入れる。

deny: 否定・否認する。

refuse: 申請・要求をはっきりと断る。

reject: 申請・要求を退ける。

ban: 危険なもの・悪質なものに対する禁止。

grant: 信用して許可を与える。正しいと認める。

その他

try: 例外の発生する可能性のある処理を試みる。

attempt: 処理を試みる。言葉の意味としては try に近いが、やや硬く、より難易度の高いものに使われることが多い。

exec: 処理、命令、短期的なスクリプト、アプリケーションの実行。=execute。

run: 継続性のある処理やスクリプト、アプリケーションの開始。

process: 手順に従って処理・加工する。

bind: 結びつける。仮の要素を実際の内容で置き換える。

init: 初期化する。デフォルトとなる値をセットする。=initialize。

reset: 既に初期化されたものに初期値をセットし直す。

open: 通信やストリームへの接続。

close: 通信やストリームの終了・切断。

start: 始動。対義語は stop。止まっていたものが動き始める。

stop: 停止。start あるいは run と対にして使う。動いているものを止める。

abort: 中断・遮断。動作しているものを中止する。途中から再開されることはない。異常、障害による強制終了。

pause: 一時停止。

suspend: 保留・延期。

begin: 始める。

end: 終了。

terminate: 終わりにする。

complete: 必要な要素、要件を満たす。補完。

参考記事

https://php-archive.net/php/words-in-function-names/
https://oxynotes.com/?p=8679
https://nelog.jp/programming-words