Não é possível executar o Rscript a partir do PHP, mas funciona perfeitamente no terminal

2

Sou novo no Ubuntu Estou tentando executar um script no PHP usando exec. No entanto, não é executado. Quando eu corro do terminal, ele executa perfeitamente.

Este é o código que eu executo a partir da linha de comando:

/usr/lib/R/bin/Rscript /home/xin/Documents/ClassificationApp/ClassificationAllInOne.R "http://localhost/categorisation/public/classification/data/1423242832.json"

Funciona perfeitamente.

A partir da pesquisa, posso deduzir que é um problema de permissões, pois o PHP / apache é executado como www-data e o Rscript é root.

Eu tentei um número de alterações para o arquivo Sudoers , nenhum dos quais funcionou: -

User_Alias WWW_USER = www-data
Cmnd_Alias WWW_COMMANDS =  /usr/lib/R/bin/Rscript, /home/xin/Documents/Classifi$

WWW_USER ALL = (ALL) NOPASSWD: WWW_COMMANDS

Isso não funcionou. Eu passei um dia brincando com várias combinações. Isso está me enlouquecendo.

Qualquer inspiração seria muito bem-vinda

M

    
por user2987739 06.02.2015 / 18:26

1 resposta

0

Ao depurar código PHP que executa scripts externos ( R , bash , ...), o mais fácil é instalar php-cli

sudo apt-get install php-google-api-php-client 

php-cli significa "Interface de linha de comando do PHP". Como o nome sugere, é uma maneira de usar o PHP a partir do terminal.

execute o script usando /usr/bin/php -q <?php YourPHPCodeHere; ?>

Como alternativa, crie um arquivo que contenha o código PHP:

#!/usr/bin/php -q
<?php
echo "Hello world...";
?>

então chmod +x szNameOfFile

e depois digite ./szNameOfFile

Se você não quiser digitar o caminho completo para o seu script PHP, basta criar um diretório bin em seu diretório inicial e copiar todos os seus arquivos de script (esse diretório será incluído automaticamente no caminho depois que você sair e reabra seu terminal)

    
por Fabby 12.02.2015 / 11:01