質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

2763閲覧

Webサイトアクセス時に、linuxコマンドを実行したい

wakara-n

総合スコア1

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/10/10 08:46

前提・実現したいこと

Webサイトにアクセスした際に、mkdirコマンドを実行したいです。
現在卒業制作で学習サイトを構築しています。
そこで将来的にWebサイトアクセス時にdockerを立ち上げたいのですが、試験的にmkdirコマンドを実行しようとしてできませんでした。

環境はAmazon Linux2(CentOS7)にapache、phpを入れています。
ご回答よろしくお願いいたします。

発生している問題・エラーメッセージ

Webサイトアクセス時にphpで記述した実行コマンドが実行されません。エラーメッセージは特に出てないと思います。

該当のソースコード

test.html <body> <?php shell_exec('sh /home/ec2-user/mkdir.sh'); ?> </body>
mkdir.sh #!/bin/bash sudo mkdir test

試したこと

httpd.conf #以下の情報を追加しました PHPIniDir "/usr/local/src/php-7.4.11" AddType application/x-httpd-php .php .html AddType application/x-httpd-php-source .phps

・sh /home/ec2-user/mkdir.shをCUIで動かした時はtestディレクトリを作成できました。
・Webサイトにはアクセス&表示もうまくいきます。
・shell_execコマンドにlsコマンドを入れてechoした時、実行結果がWebサイト上で確認できました。

補足情報(FW/ツールのバージョンなど)

ec2にはrootログインをしています。selinux無効,php7.4.11,apache2.4.46

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2020/10/10 08:57

apacheのエラーログは見ていますか?
wakara-n

2020/10/10 09:42

ありがとうございます!それらしいものが出ました。 sh: /home/ec2-user/mkdir: Permission denied
guest

回答3

0

ベストアンサー

sh: /home/ec2-user/mkdir: Permission denied

Apacheの実行ユーザーが、/home/ec2-user/home/ec2-user/mkdirにアクセス権がないのでしょう。

Apacheの実行ユーザーのアクセス出来るところに移動させて、Apacheユーザーにchownしておくのが良いと思います。
次善の案としては、chmod o+x /home/ec2-user chmod o+rx /home/ec2-user/mkdirとアクセス権を与えるか。

あと、Apache実行ユーザーがsudoできるように設定してあるかが、その次の関門ですね。

投稿2020/10/10 11:23

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakara-n

2020/10/10 12:08

やっとできました。本当にありがとうございました!!!
guest

0

readonly HOSTNAME="dst_host_filename"
readonly dst_Dir=/path/to/dst

if [[ $(wget --spider -nv "http://${HOSTNAME}/" 2>&1 | grep '200 OK') -eq 0 ]]; then
mkdir -p "${dst_Dir}" && wget -q -P "${dst_Dir}" "http://${HOSTNAME}/"
fi

ですかね。

投稿2020/10/10 10:47

編集2020/10/10 11:08
hana_yama_san

総合スコア923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakara-n

2020/10/10 11:04 編集

ご回答ありがとうございます。おそらく権限のところで躓いているので、シェルスクリプトが実行できたらご参考にさせていただきます!
hana_yama_san

2020/10/10 11:09

推敲不足で穴だらけの回答でした。修正しましたが、 まだまだ穴があるかもです。ご指摘をお願いします。
guest

0

シェルが実行できないのか、シェルは実行できるけど、
sudo mkdir testが実行できないのか切り分けが必要です。
後者の場合は、mkdirするディレクトリの権限に気を付けてください。
すでに同じ名前のディレクトリが存在しないかの確認とかも。

投稿2020/10/10 09:22

firegrape

総合スコア902

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakara-n

2020/10/10 09:37

ご回答ありがとうございます。 前者で、シェルが実行できていないようです。 mkdir.shにecho ‘aaa’を追記してwebサイトにアクセスしてみましたがaaaが表示されませんでした。
firegrape

2020/10/10 09:44

mkdir.shの権限を777にしてやってみてください。
wakara-n

2020/10/10 09:49

もう既に設定しています。ですがこのログが出ます。。
firegrape

2020/10/10 09:59

'bash /home/ec2-user/mkdir.sh' でもだめですか?
wakara-n

2020/10/10 10:12 編集

ダメでした。 bash: /home/ec2-user/mkdir.sh: Permission denied とでます
firegrape

2020/10/10 10:14

なるほどです。 そもそもなんですけど、シェルを使わずに そのままmkdirコマンド実行はダメなんでした?
wakara-n

2020/10/10 10:24

CUIで実行することはできました!
wakara-n

2020/10/10 11:13

ご丁寧にありがとうございます! test.htmlをこのように変更いたしました。 <?php shell_exec('mkdir /home/ec2-user/test'); ?> apacheのエラーログが以下のように出力されました。 mkdir: cannot create directory '/home/ec2-user/test': Permission denied
firegrape

2020/10/10 11:14

、、、 shell_execではなく execです。。 exec('mkdir /home/ec2-user/test');
wakara-n

2020/10/10 11:25

申し訳ないです。 結果はダメでした。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問