LinuxのFedora10で、PHPで外部コマンドを使ってサーバ内にディレクトリを新規作成したいのですができません。
/var/www/uuu内に、index.phpを設置し、その中の一部に以下のようなスクリプトを書いています。
<?php
system("pwd");
system("touch fff");
system("mkdir ddd");
?>
system("pwd")は/var/www/uuuという結果を出してくれます。しかし、system("touch fff")やsystem("mkdir ddd")に関しては全く結果を出してくれません。
(PHP自体のエラーではないようです。)
どうやら、外部コマンド自体はうまく機能してくれているみたいなのですが、ディレクトリやファイルを新規作成することができないようなのです。
/var/www内のディレクトリuuuのパーミッションを777にして、オーナーを一般ユーザにしてやってみても同様にうまくいきません。
どのようにすれば、PHPから外部コマンドを使ってファイルやディレクトリを新規作成することができるでしょうか?
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
やりたいことがrootでのuseraddだけなら、sudoersに
apache ALL=(root) NOPASSWD: /usr/sbin/useradd
とでも書いておきsudoすれば済むでしょう。
しかし私ならphpから直接sudoなどはせず、キューに入れるだけにしますね。別途サニタイズしつつ処理するものを書いてcronで回します。
ご回答どうもありがとうございました。お礼が遅くなって申し訳ありません。(長い間、見ていませんでした。)
まさにお答えの通りでした。この十日間、別の方法でやっていましたが、mattalixさん投稿を拝見し、試したところ、うまく行きました。(ですから、mattalixさんの方法に変更しました。)
新しいことを学ばせて頂き、またLinuxを使うことが楽しくなりました。
No.3
- 回答日時:
>PHPで外部コマンドを使ってサーバ内にディレクトリを新規作成したい
>外部コマンドでユーザ登録できない
全然ちがうレベルの話にかわっていますね?
新規ユーザーの追加ってなるとスーパーユーザーの仕事です。
apacheの実行ユーザーでなんでもできたら、apacheが乗っ取られた
ときサーバーすべて乗っ取られますよ・・・
すみません。質問の内容が変わってしまっていますね…。
ユーザをapacheからrootに換えてやろうと思っているのですが、何故だかユーザを変えられません。
system("whoami");
system("su");
system("mypass");
system("whoami");
結果は、
apache apache
です。つまり、ユーザはapacheから変わっていません。
それではと、apacheのままsudoを使って、
# sudo useradd newuser
にしてもapacheのパスワードを二度入れなければならないと思うので、以下のように書こうと思うのですが…
system("sudo useradd newuser");
system("password_of_apache");
system("password_of_apache");
apacheのパスワードが分かりません。どうやって調べるのでしょうか。rootのパスワードを忘れた場合の対処法はたくさん載っているのですが…。
No.1
- 回答日時:
sudoなどを使うか、外部コマンドではないphpの機能をつかってみては?
ご回答どうもありがとうございます。
sudo、検討してみましたが、どうやらディレクトリは作成されるようでした。すみません。
# useradd hogehoge
を外部コマンドを使って実行しようとしていて、/home/hogehogeが作成されなかったので、そのように勘違いしていました。ディレクトリだけなら作成できました。
…という訳で、外部コマンドではないphpの機能ではユーザの新規登録はできないと思いますので、外部コマンドでユーザ登録できないかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ftpのmgetコマンドの自分の格納...
-
ホームページのディレクトリを...
-
「照合パターンに合いません」...
-
7zを使うとフォルダの中身がす...
-
make時に出てきたエラーメッセ...
-
#./configureの時点でダメです。
-
ディレクトリ内に作成できる最...
-
tarコマンドのエラーについて
-
FTPでPUTできない原因は何?
-
FTPコマンドのCDについて
-
pkg-configの使い方
-
/(スラッシュ)で区切ったフル...
-
拡張子.dどういう意味
-
ftpでのフォルダごとの転送はで...
-
ファイル名で / (スラッシュ...
-
ファイル名の勝手な書き換えに...
-
unzipコマンドでディレクトリな...
-
「ドット(.)」と「¥」の意味...
-
linuxコマンド mkdirでディレ...
-
シェルススクリプト内のパス指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ftpのmgetコマンドの自分の格納...
-
ホームページのディレクトリを...
-
拡張子.dどういう意味
-
scpによるデータ転送後、ディレ...
-
FTPコマンドのCDについて
-
7zを使うとフォルダの中身がす...
-
make時に出てきたエラーメッセ...
-
「ドット(.)」と「¥」の意味...
-
バッチファルの置き場所
-
ファイル名で / (スラッシュ...
-
FTPでPUTできない原因は何?
-
linuxコマンド mkdirでディレ...
-
Linuxコマンドについて
-
linuxのコマンドラインで、拡張...
-
2TBのUSBメモリを2000円ほどで...
-
「照合パターンに合いません」...
-
/(スラッシュ)で区切ったフル...
-
ftpでのフォルダごとの転送はで...
-
unzipコマンドでディレクトリな...
-
"cp -a"と"cp -r"の違い
おすすめ情報