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

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

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

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

CasperJS

CasperJSはJavaScriptで実装されたPhantomJSのユーティリティで UIテスト向けのJavaScript フレームワークです。

Q&A

解決済

2回答

3537閲覧

PHPからCasperJSを実行すると『/usr/bin/env: node: Permission denied』になる

makkuro

総合スコア57

CentOS

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

CasperJS

CasperJSはJavaScriptで実装されたPhantomJSのユーティリティで UIテスト向けのJavaScript フレームワークです。

0グッド

0クリップ

投稿2019/05/11 15:56

編集2019/05/11 17:48

#やりたいこと

PHPからコマンドでCasperJSを実行したいです。

php

1<?php 2exec("casperjs casper.js");

#やってみたこと

まず、上記のコードだとエラーが出ました。調べたらパスが通ってないのが原因だと書いてあったので、絶対パス指定しました。

また、普段使っているユーザーでグローバルインストールしたCasperJSを指定するとパーミッションがダメな気がしたので、ローカルインストールしたCasperJSを指定しています。

さらに、PhantomJSインストールした?みたいなエラーが出たので調べると、putenv("PHANTOMJS_EXECUTABLE=PhantomJSのパス");を書けばいいとあったので書きました。これはCasperJSのバグだそうです。

次に、casperjsとphantomjsをchmod 777して、nginxをwheelグループに追加して、コマンドをsudoで実行するようにしました。

#/etc/group wheel:x:10:admin,nginx

改善後のPHPコード↓

php

1<?php 2 3// 環境変数の設定 4putenv("PHANTOMJS_EXECUTABLE=/var/www/CasperJS/node_modules/phantomjs-prebuilt/bin/phantomjs"); 5 6exec("sudo /var/www/CasperJS/node_modules/casperjs/bin/casperjs /var/www/CasperJS/casper.js 2>&1",$output,$result); 7 8echo(print_r($output)."<br/>"); 9echo $result."<br/>";

すると、/usr/bin/env: node: Permission deniedというエラーが返ってきます。
パーミッションをchmod 777しても変わらないです。

$ sudo ls -l /usr/bin | grep env -rwxrwxrwx. 1 root root 29048 10月 31 2018 env

#環境
Nginx + php-fpm + nodejs です。

CentOS Linux release 7.6.1810 (Core) anyenv 1.1.0 nodenv 1.3.0 node v12.0.0 casperjs 1.1.4 phantomjs 2.1.1 nginx version: nginx/1.16.0

自分だけで解決しようとかなり頑張って調べましたが、今回のエラーはもう私自身の力だけでは解決できなさそうです。

このサイトに書いてあることも実行しましたが、

Linuxに詳しい方、よろしくお願いします。


追記

visudoの設定は以下の通り設定してあります。

visudo

1## Allows people in group wheel to run all commands 2%wheel ALL=(ALL) ALL 3 4## Same thing without a password 5%wheel ALL=(ALL) NOPASSWD: ALL

出力結果 ↓

bash

1/usr/bin/env: node: Permission denied

設定が有効か確認のためvisudoの設定をコメントアウトしたところ以下のようになったので、正しく設定は反映されていると思います。

visudo

1## Allows people in group wheel to run all commands 2# %wheel ALL=(ALL) ALL 3 4## Same thing without a password 5# %wheel ALL=(ALL) NOPASSWD: ALL

出力結果 ↓

bash

1sudo: no tty present and no askpass program specified.

また、/etc/php-fpm.d/www.confの設定は以下の通りです。

conf

1user = nginx 2group = nginx

再掲になりますが、etc/groupは以下の通りです。

group

1wheel:x:10:admin,nginx

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

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

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

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

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

guest

回答2

0

多分でちゅが、sudoersにPHPの実行環境のユーザを登録ちてないのではないでちょうか?
sudoersに登録されていないユーザはsudoを使ってroot権限を得る事はできないでちゅ。

CentOSだと

visudo

で、sudoersの編集ができるでちゅ。
これをつかって、PHPの実行環境ユーザに権限を与えると良いと思いまちゅ。

投稿2019/05/11 16:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

makkuro

2019/05/11 17:53

早速のご回答ありがとうございます。 visudoコマンドでsudoersを改めて確認してみましたが、正しく設定されているようでした。 試しに該当部分をコメントアウトすると「お前にsudoは使えねえよ」みたいなエラーが出たので、おそらくきちんと設定されているように思います。 設定の詳細は質問に追記したので、お目通しください。 私自身Linuxに関する知識はほとんどないので見落としている点が多いかもしれません。他にも思い当たる点があれば教えていただきたいです。
退会済みユーザー

退会済みユーザー

2019/05/11 19:02 編集

>visudoコマンドでsudoersを改めて確認してみましたが、正しく設定されているようでした。 そうは見えないでちゅが。
guest

0

自己解決

グローバルのPhantomJSを使ったり、echo password | sudo -S commandを使って試行錯誤していたら解決しました。

投稿2019/05/11 22:12

makkuro

総合スコア57

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問