エス技研

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


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

      2014/09/12

フォルダを指定しパーミッションを変更するプログラムを作ってみた

 

プログラムを作った経緯とプログラムソース

 
とあるサーバで、ファイルのパーミッションをまとめて変更したい、という必要性があり、プログラムを作成してみました。
 
大したものではないですが、せっかく作りましたので、もし他の人も何か参考になるのならばと思ってここにアップしてみることにしました。
 
——————

——————
 
 

サンプルソースの使い方

 
上記のソースプログラムを適当なファイル名のファイルにコピペして、サーバにアップして、そのファイルにアクセスすると下記のような画面が表示されます。
 
20140911_php_01
 
「フォルダ名」にフォルダ名を入力します。
相対パスで指定し、フォルダ名の最後に「/」は不要です。
 
「パーミッション」には指定したいパーミッションを入力します。
パーミッションの設定は「0755」「0666」など最初に「0」を付ける必要がありますが、その部分は自動付与しますので、入力は必要ありません。
 
「Chmod実行」ボタンをクリックすると、「フォルダ名」で指定したフォルダの中のファイルのパーミッションを「パーミッション」で指定したものに変更します。
 
フォルダのパーミッションは変更しません。
 
 

プログラムの解説

 
プログラムの解説、というほどたいそうな処理を書いているわけではありませんが、解説をしていきます。
 
35行目の「poendir」でフォルダを開いて、36行目の「readdir」で 1つずつのファイルを取得し、37行目で「.」「..」を排除し、39行目の「is_file」でファイルであることを確認(フォルダを排除)します。
42行目の「chmod」でパーミッションを変更します。
 
また、見ていただいて分かる通り、入力チェックは最低限しか行っていませんので、正しくない値を入れた場合は、想定外の不具合につながる可能性もあります。
 
さらに、サニタイジングも行っていませんので、使い終わったら速やかにプログラムファイルを削除しておく方がいいでしょう。
 
 

サンプルソースの注意点

 
このプログラムは想定通りの結果が得られない場合が多々あります。
下記のような場合は、サーバの設定によって実行できないものになりますので、あきらめるしかありません。
 
・chmod関数が使えない
chmod関数は、使い方を間違えるとサーバ全体に大きな影響を与えかねない関数であることから、これらの関数を利用できないようにしているサーバもあります。
 
・ファイルの権限が違う
サーバで動いているプログラムにはそれぞれ権限があり、FTPでアップロードしたファイルと、PHPのプログラムで生成されたファイルと、それぞれ違うユーザが割り当てられているサーバもあります。
その場合は、作成したユーザが違うためにプログラム上からパーミッションの変更ができない場合があります。
 
 
また、このプログラムは、パーミッションを変えるだけですが、設定に失敗するとシステム全体に大きな影響を与えてしまう可能性もありますので、まずは、テスト用のファイルで実験をしてみてください。
 
例えば、下記の様にフォルダとファイルを生成し、「test1」フォルダを指定して実験してみるとかテストファイルで試してみてください。
/test
/test/chmod_php.php
/test/test1/
/test/test1/01.txt
/test/test1/02.txt
/test/test1/03.txt
/test/test1/04.txt
/test/test1/05.txt
 
※「chmod_php.php」が上記サンプルのプログラムとします。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

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

Message

メールアドレスが公開されることはありません。

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

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

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

  関連記事

PHP画面が真っ白 header(“Location: $url”);

PHPの開発で header(“Location: $url”);を使うと画面が真っ白になる不具合が出る場合もあります。

JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()
JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()

JSONとは「JavaScript Object Notation」の略でテキストベースのデータフォーマット。JSONの値をPHPで配列に変換するWebツールの紹介とその処理「json_encode()」「json_decode()」関数の解説。

リダイレクトループが原因で「ERR_TOO_MANY_REDIRECTS」「このページを表示できません」が出たときの対策12事例+α

リダイレクトループ、自動転送設定ループの原因の解説とその対応方法を含め事例 12例を挙げて説明。

GMOペイメントゲートウェイのjava.io.IOExceptionのエラー

ECCUBEの決済でGMOペイメントゲートウェイのモジュールを使ってテスト決済を行った場合の不具合、java.io.IOExceptionと言うエラーの原因と対策方法の解説です。

SEO対策用タイトル、ディスクリプションの文字数カウントツール

SEO対策に使える文字数カウントツールで文字数の条件の説明も行っています。

ECCUBEの新規追加ページがInternal Server Error・Not Foundに

ECCUBEで新規追加したページがInternal Server Errorに!原因はファイルのパーミッションの場合が多くその対処方法とプログラムの修正ポイントを解説。Not Foundも解説。

ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある

2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。

サーバ移転、PHPバージョンアップでPHPのソースコードが表示される・ショートタグのPHPが動かない

PHPでショートタグを使うのは危険。サーバ移転やバージョンアップで動かなくなる!ソースが丸見え、設定情報流出のリスクが!php.iniのshort_open_tagの設定を再確認。

PHPで正規表現の検証には preg_match_allが便利

PHPで正規表現の検証には preg_match_allが便利です。その便利さの使い方の解説です。

ob_start、ob_get_contents関数でPHPの標準出力をバッファリング・変数に代入

標準出力をバッファリングし変数に代入することができるob_start()関数の解説。include()の処理をバッファリングすることで自由な場所に処理を記述することが可能。