42493


AmazonEC2に「svgexport」というツールをインストールしました。  
<https://github.com/shakiba/svgexport>

上のURLに書いてあるとおり、  
npm install svgexport -g  
でインストールしたのですが、インストールされた場所が、ec2-userの下になってしまいました。

＜SSHでのインストール場所の確認＞

[code]

    [ec2-user@ip-172-31-31-27 ~]$ which svgexport
    ~/.nvm/versions/node/v8.10.0/bin/svgexport
    
[/code]

恐らくそのせいと思うのですが、  
PHPの中からexecでsvgexportを実行すると、Permission deniedで実行できません。

＜PHPからexecで実行した文＞

[code]

    exec('/home/ec2-user/.nvm/versions/node/v8.10.0/bin/svgexport 
    /var/www/html/test.svg /var/www/html/test.png');
    
[/code]

＜ログに書き出した実行結果＞

[code]

    $output= Array
    (
        [0] => sh: /home/ec2-user/.nvm/versions/node/v8.10.0/bin/svgexport: 
    Permission denied
    )
    
[/code]

SSHでec2-userで直接コマンドを実行すると、正常に変換されます。

＜SSHで正常にいくコマンド＞

[code]

    [ec2-user@ip-172-31-31-27 ~]$ /home/ec2-
    user/.nvm/versions/node/v8.10.0/bin/svgexport /var/www/html/test.svg 
    /var/www/html/test.png
    
[/code]

ec2-userで正常に実行できていますので、パーミッションの関係だと思うのですが、どうすればいいのかがわかりません。

どなたかご教授いただけますようお願いいたします。  
どうぞよろしくお願いします。

[追記]  
コメントをいただきましたので、ec2-userのパーミッションを以下に追記させていただきます。

[code]

    [ec2-user@ip-172-31-31-27 ~]$ ls -la
    total 1208
    drwx------ 14 ec2-user ec2-user    4096 Mar 19 08:08 .
    drwxr-xr-x  5 root     root        4096 Feb 19 02:37 ..
    drwxrwxr-x  2 ec2-user ec2-user    4096 Mar  8 05:27 .aws
    -rw-------  1 ec2-user ec2-user   32482 Mar 19 07:19 .bash_history
    -rw-r--r--  1 ec2-user ec2-user      18 Aug 30  2017 .bash_logout
    -rw-r--r--  1 ec2-user ec2-user     284 Mar 19 07:48 .bash_profile  
    -rw-r--r--  1 ec2-user ec2-user     329 Mar 18 02:28 .bashrc
    drwxrwxr-x  3 ec2-user ec2-user    4096 Feb 19 06:23 .composer
    drwx------  3 ec2-user ec2-user    4096 Mar 13 05:40 .config
    drwxrwxr-x 92 ec2-user ec2-user    4096 Mar 19 07:50 .npm
    drwxrwxr-x  9 ec2-user ec2-user    4096 Mar 19 07:56 .nvm
    
[/code]

これ以降、  
.nvm、versions、node、v8.10.0、binまでのパーミッションは、drwxrwxr-xでした。  
  
/home/ec2-user/.nvm/versions/node/v8.10.0/binの中のパーミッションは以下になっていました。

[code]

    [ec2-user@ip-172-31-31-27 bin]$ ls -la
    total 34088
    drwxrwxr-x 2 ec2-user ec2-user     4096 Mar 19 07:58 .
    drwxrwxr-x 7 ec2-user ec2-user     4096 Mar 19 07:58 ..
    -rwxrwxr-x 1 ec2-user ec2-user 34895869 Mar  6 22:47 node
    lrwxrwxrwx 1 ec2-user ec2-user       38 Mar  6 22:47 npm -> 
    ../lib/node_modules/npm/bin/npm-cli.js
    lrwxrwxrwx 1 ec2-user ec2-user       38 Mar  6 22:47 npx -> 
    ../lib/node_modules/npm/bin/npx-cli.js
    lrwxrwxrwx 1 ec2-user ec2-user       42 Mar 19 07:58 svgexport -> 
    ../lib/node_modules/svgexport/bin/index.js
    
[/code]

../lib/node_modules/svgexport/bin/の中のパーミッションは以下の通りでした。

[code]

    [ec2-user@ip-172-31-31-27 bin]$ ls -la
    total 12
    drwxrwxr-x 2 ec2-user ec2-user 4096 Mar 19 07:58 .
    drwxrwxr-x 5 ec2-user ec2-user 4096 Mar 19 07:58 ..
    -rwxrwxr-x 1 ec2-user ec2-user   62 Mar 19 07:58 index.js
    
[/code]


CC BY-SA 3.0
2018-03-19T08:27:15.530
42491
2018-03-19T11:10:39.977
2018-03-19T09:24:15.687
18800
18800
question
php linux node.js
別ユーザーでインストールしたツールをPHPのexecで実行するとPermission deniedになる


確認してもらった内容を見る限りでは`ec2-user`のホームディレクトリのパーミッションが以下の様に`rwx------(700)`になっており、他のユーザーから参照できないのが原因だと思います。

[code]

    drwx------ 14 ec2-user ec2-user    4096 Mar 19 08:08 .
    
[/code]

実際にphpを実行するユーザ(webサーバ？)の権限で参照できるように、`group`や`other`に対してアクセス許可を付与してみてください。

[code]

    $ chmod g+rx /home/ec2-user/
        又は
    $ chmod go+rx /home/ec2-user/
    
[/code]


CC BY-SA 3.0
2018-03-19T11:10:39.977
42493
2018-03-19T11:10:39.977
3060
42491
answer