エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


PHPパーミッション変更のchmod関数・モードを変数で指定する方法

      2014/11/03

chmodの第二引数は 8進数で指定する

 

chmod関数のパーミッションの値に変数を使う場合の対処方法

 
ファイル、フォルダのパーミッションを変更する PHPの関数、chmod関数において、パーミッションの値を変数にして実行しようとするとうまくいかない!?
そんなときの対処方法についての説明です。
 
 
具体的には下記のように、8進数に変換する octdec関数を利用します。
 

 
 

chmod関数と octdec関数の解説

 

chmod関数

 
chmod関数は、「$filename」で指定したファイルやフォルダのパーミッション(属性)を「$mode」で指定したものに変更します。
ファイルもフォルダも特に区別することなく指定してパーミッションを変更することができます。
 

 
ここで注意が必要なのが、「$mode」は 8進数の数値で指定する必要がある点です。
 
パーミッションを「755」に指定したい場合は、下記のように指定をします。
 
【サンプルソース】

 
そして、単純に「0755」の部分を変数に変更するだけの下記のような書き方では、「$perm」は 10進数となっているためにそのまま指定しても正常には動きません。
 

 
そのため、そのため octdec関数で 8進数に変更する必要があります。
 
 

octdec関数

 
octdec関数は、下記の様に「$number」で指定した 10進数の数値を 8進数に変換します。
 

 
 
【サンプルソース】

 
 

この記事を書いた経緯

 
この記事は「パーミッション(属性)一括変更ツール・WordPress最適化済」を作成する際に、chmodの第二引数をどうやって与えればいいのか、というところで一番悩みまして、しかもあまり情報がなかったこともありまして、同じ悩みに行き当たった方の参考になれば、と思って書きました。
 
解決の糸口につながれば幸いです。
 
 
ちなみに、「パーミッション一括変更ツール(WordPress最適化済)」は、WordPressのファイルのパーミッションを一括して変換するツールです。
 「パーミッション一括変更ツール(WordPress最適化済)」のダウンロードサイトは左のリンク先から。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Comment

  1. 通りすがりのテスター より:

    まさに同じ問題で悩んでいましたので有り難かったです!
    早めにこのページを見つけられて助かりました!

    • エス技研 より:

      通りすがりのテスターさん、コメントありがとうございます。
      お役に立てたということ、すごく嬉しいですね。書いた甲斐がありました!
       
      作業をしていて自分が困ったことなどを中心に書いていますので、またの機会があれば、と思っています。
      (またの機会、って事は、また困ることがあるって言うことなので、それがいいことなのかは分かりませんが....)

エス技研 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較
PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較

PHPからWebサイトにアクセスしてHTMLを取得、APIにアクセスして情報を取得する場合は、cURLがオススメ。file_get_contentsでも可能だがエラー制御に難がありトラブルのもとになる。

指定した数で文字列を丸める関数substr、mb_substr、mb_strimwidthの違い
指定した数で文字列を丸める(n文字目で…にする)関数substr、mb_substr、mb_strimwidthの違い

文字列を指定された数で抜き出すPHPの関数、substr、mb_substr、mb_strimwidthについての解説。似た関数だが引数の指定方法が違ったり、文字数がバイト数か文字数かも違ったり、注意が必要だ。

乱数発生器(パスワード生成サービス)がバージョンアップで高速化!
乱数発生器(パスワード生成サービス)がバージョンアップで高速化!

乱数やパスワードを生成する乱数発生器を高速化!重複しない10桁、20桁の文字列を10万件、20万件と生成することも可能!イベントのキャンペーンのシリアルコードなどにも利用可能!

フォルダを指定してファイルのパーミッションを変更するプログラム

フォームからフォルダ、パーミッションを指定しパーミッションを変更するサンプルプログラムの解説です。

CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説
CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説

CentOS6系、7系のPHPバージョンを5.3から5.6、7.0、7.1にアップする作業手順と解説。yum updateコマンドを使い作業時間は約10分。コマンドの解説や引数の意味なども解説しているので役に立つはず。

連想配列のキーも値もまとめてhtmlspecialchars()でサニタイズする関数の作成解説
連想配列のキーも値もまとめてhtmlspecialchars()でサニタイズする関数の作成解説

PHPの配列・連想配列のキーと値をまとめてhtmlspecialchars()関数でサニタイズ(無害化、無毒化)を行う関数を作成。連想配列のキーはarray_map()関数でのサニタイズは無理。

Smartyのテンプレート内の処理で計算、加工をする方法

Smartyのテンプレート上で変数を計算する、加工する方法を解説します。

XML形式の値を配列形式に変換・PHPでは simplexml_load_string()
XML形式の値を配列形式に変換・PHPでは simplexml_load_string()

XMLとは「Extensible Markup Language」の略でテキストベースのデータフォーマット。XMLをPHPで配列に変換するWebツールの紹介とその処理「simplexml_load_string()」関数についての解説。

QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ
QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ

CakePHP2用のQRコード作成ライブラリ「cakePHP-QR-Code-Helper」をプレーンのPHPでも使うためのカスタマイズ方法を解説。1ファイルを設置するだけでQRコードが作れるため使い勝手がいい。

ECCUBEでアップロードできない。upload_max_filesizeを設定する場所

テンプレートをアップロードする際に発生するエラー「テンプレートファイルがアップロードされていません」の対処方法。これはファイル容量の制限に引っかかっています。