PHPおよびPEARを使って、FTPサーバ上のファイルのパーミッションの変更をしたいと考えています。
具体的には、
PEARを利用し、$ftp->put()でアップしたファイル($filename)を、700に属性変更したいのです。
ソース上は、
chmod($filename, 0700);
と書いています。
ところが、実行すると以下のようなワーニングが出ます。
「Warning: chmod() [function.chmod]: No such file or directory in ・・・」
今度は、
$ftp->chmod($remote_folder[$i]. $filename, 0700);
と書いて実行してみるとエラーは出ません。
しかし、パーミッションは変わっていませんでした。
次に、
「PEARの命令を使って実行すればいいんだ!」と考えて、
$ftp->execute(chmod($filename, 0700));
と書いて実行してみました。
結果は、最初と同じ、
「Warning: chmod() [function.chmod]: No such file or directory in ・・・」
というワーニングでした。
いったい何がいけないいんでしょうか(--;
phpのマニュアルを見ると、chmodに、「この関数では、 リモートファイルを使用することはできません。」とあります。
が、教えて!gooなどで検索してみると、chmodを使って普通にサーバ上のファイルのパーミッションを変更している書き込みが見られます。
正直、混乱しているというか、よく分からない状態です。
皆様、気がついた点などありましたら、是非、アドバイスお願い致します。
No.1ベストアンサー
- 回答日時:
「$filename」というファイルは「どこに」あるんでしょう?ftpでputしているわけですから、phpが動作しているサーバでなく別サーバ(リモート)ですよね?であれば
>chmodに、「この関数では、 リモートファイルを使用することはできません。」とあります。
ということになります。普通「サーバ上のファイルのパーミッションを変更している」のは、phpスクリプトが動作するサーバと対象ファイルが同一サーバにあるため「サーバ上」とはいってもローカル扱いだからです。
基本的に
$ftp->chmod($remote_folder[$i]. $filename, 0700);
でいいと思いますが、$remote_folder[$i]に移動してから$filenameだけでchmodすべきでは?
shimixさん、早速のご回答ありがとうございます。
>ftpでputしているわけですから、
>phpが動作しているサーバでなく別サーバ(リモート)ですよね?
そのとおりです。
PHPのプログラムは自分のパソコン上、対象のファイルはインターネット上のFTPサーバにあります。
>普通「サーバ上のファイルのパーミッションを変更している」のは、
>phpスクリプトが動作するサーバと対象ファイルが同一サーバにあるため
>「サーバ上」とはいってもローカル扱いだからです。
そういう意味だったのですね。
勉強になりました。
>$remote_folder[$i]に移動してから$filenameだけでchmodすべきでは?
はい。
shimixさんのアドバイスにそって実行し、エラーは出なくなりました。
($ftp->cd()で該当フォルダに移動し、chmodをかける。)
しかし、パーミッションはchmodで指定した値に変更されませんでした。
いったん対象ファイルを削除して実行しても同じでした。
これはいったい何が原因なのか・・・
引き続きご指摘、ご回答お待ちしております。
No.3
- 回答日時:
そのFTPサーバーはchmodをサポートしていますか?
まずは、PHPでなくコマンドラインで実行して確認して下さい。
memphisさん
ご回答ありがとうございます。
>そのFTPサーバーはchmodをサポートしていますか?
はい、ただし、「セーフモードでのサポート」だそうです。
(このFTPサーバのホスティング業者に確認しました。)
「セーフモードにより制限を受けるか無効となる関数」
http://jp.php.net/manual/ja/features.safe-mode.f …
このあたりがパーミッションの変更ができない理由なのかもしれません・・・
>まずは、PHPでなくコマンドラインで実行して確認して下さい。
FTPコマンドを打てる『SmartFTP』というツールがありまして、そこから「site chmod 0700 ファイル名」と打つと、正常にパーミッションが変更されます。
No.2
- 回答日時:
PHPでパーミッションを変更するということは、そのファイルの所有者はapacheじゃないといけないのではないでしょうか?
apacheが生成したファイルであれば変わると思いますけど、FTPでアップデータのパーミッションを変えるのであればその所有者は自分のはずですから。
もしrootでSSHかTELNETでそのサーバにログインできる状況でしたら
> chown apache. 該当ファイルパス
で所有者変えればOKだと思います。
的外れならゴメンナサイ
Rebeさん、ご回答ありがとうございます。
>もしrootでSSHかTELNETでそのサーバにログインできる状況でしたら
> chown apache. 該当ファイルパス
>で所有者変えればOKだと思います。
PHPのプログラム上で変更できるようにしたいのです。
手動ならFTPツールで変更が出来ることを確認しています。
引き続きご回答お待ちしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxの実行結果を修正したいです。 2 2022/11/23 08:32
- UNIX・Linux Linuxの実行結果を修正したいです。 6 2022/11/22 12:57
- 画像編集・動画編集・音楽編集 DVD Styler トラブル解決方法 6 2022/10/29 16:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- サーバー Googleドライブなどを使わずにテザリングAndroidでWindowsとファイル共有 1 2023/02/19 13:14
- UNIX・Linux 実行の仕方及び実行結果が分かりません。 2 2022/11/17 19:31
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【file_exists】ファイルが存在...
-
PHPファイルの画像背景について
-
HTMLに埋め込んだPHPがうまく出...
-
URLが.PHPってどういう...
-
別のドメインのファイルをrequire
-
さくらレンタルサーバーでPHPが...
-
phpmailerで送れない添付ファイ...
-
.phpと.incファイルの違いはな...
-
PHPを使ってのサーバ上ファイル...
-
Xamppでindex.phpだけしか表示...
-
phpinfoの内容が見れない
-
phpが実行できない
-
ファイルアップロード時のファ...
-
フォントの色を変えるには?
-
PHPの設定で、 エラーが発生し...
-
onedrive にexcelファイルをア...
-
Linux:PHPでTELNETによるSMTP...
-
ListViewコントロールでサムネ...
-
ボタンのクリック数を合計保存...
-
ワードプレス、Contact Form 7...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
.phpファイルが、表示されない
-
URLが.PHPってどういう...
-
HTMLに埋め込んだPHPがうまく出...
-
PHPファイルの中身が見られるこ...
-
PHPの戻り値をWINDOWSバッチフ...
-
別のドメインのファイルをrequire
-
PHPを使ってのサーバ上ファイル...
-
htmlspecialcharsが機能してい...
-
PHP+MySQL SQL文を外部ファイル...
-
phpinfoの内容が見れない
-
サーバー間のファイルの移動(コ...
-
use と requireの違いは?
-
phpファイルを見られないように...
-
htdocsフォルダ以外ではPHP...
-
PHPからCronを編集したい
-
コマンドプロンプト エラー
-
さくらレンタルサーバーでPHPが...
-
サイトのphpソースコードを表示...
おすすめ情報