• 受付中
  • 困ってます

phpのexecでパーミッションエラーになる

PHPやLinuxに詳しい方、助けてください。 ■状況 phpのexecでコマンドを実行するとエラー126(Permission denied)で実行されない。 本来やりたいのは、AWSのEC2にFirefoxをインストールして ヘッドレスで実行し、ウェブページ全体のスクリーンショットを撮ること。 Firefoxではなく別の描画エンジン(wkhtmltoimage)を使った場合、問題なく動作する。 Firefoxでも、コマンドプロンプトからコマンドを実行すると、問題なく動作する。 しかし、PHPの中から同一コマンド実行すると、Permission deniedで実行できない。 Firefoxの実行ファイルなどの所有者はapacheで パーミッションは777に変えたのにPermission deniedになる状態。 Apache、php-fpm、インスタンスの再起動をしても結果は変わらず。 ■環境 AWSのEC2 OS: Amazon Linux release 2 (Karoo) Kernel: 4.14.181-140.257.amzn2.x86_64 SELinux: Disabled Apache: 2.4.43 PHP: 7.2.31 Mozilla Firefox: 78.0.2 AWSのセキュリティグループ(ファイアウォールルール) HTTP: 80 全IPアドレスからアクセス可 HTTPS: 443 全IPアドレスからアクセス可 SSH: ***22 (ポート番号は一部伏せ字)自宅のIPアドレスからのみアクセス可 ApacheのDocumentRoot: /var/www/html/ Apacheのテストページは表示される。 phpinfo();も表示される。 fpm-fcgiが有効 ユーザーはec2-user(仮称)でwheelグループに所属。 ブラウザからPHPファイル内の<?php echo exec('whoami'); ?>を実行した結果 apache やりたいことを書いたPHPファイルの中身の一部 $command = '/home/ec2-user/firefox/firefox -headless -screenshot /var/www/html/htmltoimage/images/test.jpg https://yahoo.co.jp/ 2> /var/www/html/htmltoimage/error.txt'; exec($command, $output, $return_ver); ブラウザからPHP内のコマンドを実行した後の$return_verの中身 126 同じく実行後のerror.txt(エラーメッセージ)の中身 sh: /home/ec2-user/firefox/firefox: Permission denied /var/www/htmlのパーミッション drwxrwsr-x 3 ec2-user apache 19 Jul 25 15:52 html /var/www/html/htmltoimageのパーミッション drwxrwsr-x 3 ec2-user apache 142 Jul 31 03:16 htmltoimage firefoxの実行ファイルの置き場所(ホームディレクトリ配下) /home/ec2-user/firefox/firefox /home/ec2-user/firefox(firefox設置フォルダ)のパーミッション(775) drwxrwxr-x 9 apache apache 4096 Jul 26 22:23 firefox /home/ec2-user/firefox/firefox(firefox実行ファイル)のパーミッション(777) -rwxrwxrwx 1 apache apache 14656 Jul 8 18:31 firefox

共感・応援の気持ちを伝えよう!

  • 回答数0
  • 閲覧数7
  • ありがとう数0

みんなの回答

この質問にはまだ回答がついていません。あなたが最初に回答してみませんか?

関連するQ&A

  • AWSのEC2のwebサーバを踏み台にしたい

    AWSのEC2インスタンスに関しての質問です。 現在AWSを利用していて、操作がわからないので、どなたかご教授お願いします。 VPCの中にパブリックサブネットとプライベートサブネットを作成しました。 パブリックサブネットの中にApacheをインストールしたwebサーバを作り、 プライベートサブネットの方にMySQLを入れたいです。 NATインスタンスも作成して、Apacheのインストールも終わったので、 webサーバーを踏み台にして サブネットにあるインスタンスにMySQLをインストールするところです。 しかし、うまく踏み台に出来ず、セキュリティグループに問題はないと思うので、 キーペアーの問題かなとおもっています。 なんかSSHでアクセスするにはwebサーバーに秘密鍵を置く必要があるようなのですが、 その作業が出来ません。 マックを使っていてターミナルから以下のコマンドを打ち込んでいます。 scp -i XXXXX.pem ec2-user@ ec2-YY-YY-YY-YY. ap-northeast-1.compute.amazonaws.com:~/ どこかコマンド間違っているでしょうか? "Permission denied (publickey). lost connection"というメッセージが出ているので パーミッションかなと思い chmod 400 XXXXX.pemを実行してもなにもかわらず… ここで詰まっています。 原因がわかる方、もしよければ教えていただけると助かります。 よろしくお願い致します。

  • ローカルサーバーでパーミッションエラーが発生する

    ローカルで開発実験用にサーバーを立てています。外部には接続していません。このサーバー上で、phpのrmdir関数(引数に指定したディレクトリを削除する関数)を実行したところ「Permission denied.」というエラーが発生しました。パーミッションが許可されていないとのことですが、WWW上なら分かるのですがローカルにパーミッションがあるということを知りませんでした。現在、この関数を実行できないとプログラムの動作確認が出来ないので困っています。どのようにすれば解決できるのでしょうか? 環境は以下の通りです。 OS: WindowsXP Server: Apache2.2.4 PHP: v5.2.4 自分で検索してみたところ、OSはLinuxなどを想定していることが多く、「PHPのchmod関数(パーミッションを設定する関数。ただしWindowsでは無視される。)を使え」といったような、Windowsユーザーには解決策とならない情報ばかりでした。

    • 締切済み
    • PHP
  • PHPのexecで別PHPの実行

    「エックスサーバー」というレンタルサーバーを使用しています。 PHPファイルの中で[exec()]関数を用いて、別ファイルのPHPを実行させたいと考えております。  ・PHPバージョン:5.3.3  ・ドメイン:XXXXX.xsrv.jp 以下の内容(ProgramA)を実行すると、 [exec()]関数で呼び出している処理(ProgramB)が実行されていないように思います。 どのように修正したら、(ProgramB)が実行されるのでしょうか? どうかご教示くださいませ。 ---ProgramA.php (起動する側)---------------------- <?php exec('/usr/bin/php5.3 /home/XXXXX(ユーザー名)/xsrv.jp(ドメイン)/public_html/AAA/BBB/ProgramB.php'); echo "test!"; ?> ※ProgramA.phpを実行すると、ブラウザには「test!」という文字列が表示されます。 ※ProgramA.phpのパーミッションは755に設定されています。 ---ProgramB.php (起動される側)---------------------- <?php echo"HelloWorld"; ?> ※ProgramB.phpのパーミッションは755に設定されています。

    • 締切済み
    • PHP
  • ファイルの実行権限について

    はじめまして、今回phpに携わる事になりましたが 今回の質問がphpの問題なのか、環境の問題なのかは分かりませんが ご教授を受けたくて投稿する事にしました。 まず環境ですがFreeBSD上にphpファイルがあり TeraTerm上で、そのphpファイルの所有者をrootユーザに変更しまして root権限で実行したところPermission deniedとなり 実行出来ませんでした。 (phpファイル自体のパーミッションは755です) 環境の問題で発生するのかスクリプトの問題で発生するのかが 私には分かっていないのですが、Permission deniedが 発生する原因としてファイルのパーミッション以外に 何が考えられるのかご教授下さい。 よろしくお願い致します。

    • 締切済み
    • PHP
  • PHP+sendmailによるメール自動返信

    お世話になります PHPとsendmailを使ってメール自動返信(空メール登録)の仕組みを作っています いろいろ試行錯誤しながら、エラーメールが帰ってこないところまでは何とかいけたのですが、PHPが動いているそぶりが無いので困っております 本来は自動的にメールを返信するものですが、動作確認のためにこのようなログを吐き出すPHPをキックしています PHPにエラーがある場合はエラー内容がfatalerrorでメールが帰ってきます 以下のようにPermission deniedも帰ってくるので、PHP自体にはアクセスできていると思うのですがそこから先がわかりません ----- The following addresses had permanent fatal errors ----- |/var/www/html/log_test.php (reason: 126) (expanded from: <user@hoge.jp>) ----- Transcript of session follows ----- sh: |/var/www/html/log_test.php: Permission denied 554 5.3.0 unknown mailer error 126 ■/etc/aliasesの記述 user: |/var/www/html/log_test.php ■log_test.phpの内容 #!/usr/bin/php -q <?php require_once 'Log.php'; $conf = array('mode' => 0777, 'timeFormat' => '%X %x'); $file = &Log::factory('file', '/var/www/html/out.log', 'TEST', $conf); $file->log('ログ内容'); ?> 以下のコマンドも実行しています # cd /etc/smrsh # ls -la # ln -s /usr/bin/php ./php こちらを参考にしました↓ メール受信時にperlを実行(sendmail) http://lab302.blog65.fc2.com/blog-entry-96.html

    • 締切済み
    • PHP
  • ディレクトリの移動 cd 

    初め、/usr/localにapache-ant-*-bin.tar.gz (/home/usrname/ダウンロード/下にある)を展開しようとして次のコマンドを実行しました。 /usr/local$ tar -xzvf /home/usrname/ダウンロード/apache-ant-*-bin.tar.gz すると cp: ディレクトリ `./apache-ant-1.7.0' を作成できません: Permission denied と出て、できませんでした。次にディレクトリを移動して ~/ダウンロード$ tar -xzvf apache-ant-*-.bin.tar.gz を行い、またディレクトリを移動して /usr/local$ cp -r /home/usrname/ダウンロード/apache-ant-* . のコマンドを実行するとまた cp: ディレクトリ `./apache-ant-1.7.0' を作成できません: Permission denied と表示されて移動させることができません。。 なんででしょうか?お願いします。

  • CentOS + apache で403エラー

    CentOS + apache で403エラー CentOS5.4とapache2.2でwebサーバを構成中ですが、 全てのページで403エラーが返ってきます。 いろいろ試してみましたが、 ルートディレクトリの/var/www/htmlを作成し直した際に、 何故か一度だけ動きました。理由は不明です。 その後OSを再起動した後は また見られない状態にもどっています。 どなたか分かる方、アドバイスをお願いします。 以下の事は試してみました。 ==================================================== 1. apache,osの再起動。 2. iptables停止 3. ブラウザ表示 > You don't have permission to access / on this server. /etc/httpd/logs/error_log 表示 > Permission denied: /var/www/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable だったので、ルートディレクトリ以下全てのパーミッションを777に、 それまではディレクトリ755、ファイル644 4. /var/www/htmlから、.htaccessを削除、テスト用index.htmlを作成 ブラウザ表示 > You don't have permission to access / on this server. > Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. error_log > Permission denied: access to /error/noindex.html denied /var/www/error/noindex.htmlのパーミッションは755です。 ======================================================= 以上です。宜しくお願いします。

  • /var/www/html/の一部がForbidden

    /var/www/html/の中には/smm/と/phpMyAdmin/というディレクトリが存在します。 /phpMyAdmin/index.php(-705)は正常に表示されるのですが、 /smm/index.html(-705)はForbiddenで表示されません。(403Error) ちなみにエラーログでは Permission denied と表示されています。 おそらくパーミッションの問題なんですけど、同じパーミッションで 一部のファイルがアクセスできないというようなことがあるのでしょうか? どなたか御回答していただければ嬉しいです。

  • ホームディレクトリのパーミッション!

    今日一日これに困っています。優しく教えてください♪m(0_0)m TurboLinux 7 & Apache についてです。 /etc/httpd/conf/httpd.conf を編集しています。 UserDir   www と記載しました(public_htmlも含めて) /home/user name/www/index.html (Linux) http://192.168.1.1/~user name/index.html (IE) You don't have permission to access /~user name/ on this server というメッセージが出ます。 おそらくパーミッションの設定が悪いと思って744,755,766,777と試して見たのですが結果は同じでした。 設定変更したと言えば linux側でwww(public_html)のディレクトリで設定変更しました。 (ディレクトリ内のファイルもすべて変更する) ftpソフトでありとあらゆる所を変更してみました。 どうしたらいいのでしょうか? 中に入ってるデータは単なるトップページとその次のページの2枚です。 (どちらもテキストで書いてある簡単なもの) お忙しいとは思いますが少しお知恵をお借りできないでしょうか? お願いします。

  • パーミッションが644でも実行できてしまう現象

    ファイルのパーミッションをchmodで644に変更したのですが、phpコマンドが実行できます。これはサーバに別の設定のようなものがあるのでしょうか?