PHP ファイルで shell_exec() を使用して、開発バナーをリモートで削除/追加できるようにしたいと考えています。php/apache から実行すると、sed -i 関数が機能しません。SELINUX が無効になっています。別のユーザーとして端末から test.sh を実行すると、問題なく動作します。ブラウザは次を返します。
Reset/Set Environments
Running now...
/sbin/nologin
sed is /bin/sed
sed: couldn't open temporary file /var/www/html/folder/folder/folderwithoutwritepermission/sed63Klhk: Permission denied
EOF
コードは次のとおりです。
PHP ファイル:
<!DOCTYPE HTML>
<html>
<head>
<title>Reset/Set Environments</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Reset/Set Environments</h1>
<?php
$output = shell_exec('sh /var/www/html/pages/test.sh');
echo("<pre>{$output}</pre>");
?>
</body>
</html>
test.sh:
#!/bin/bash
cd /var/www/html/pages/;
echo "Running now...";
echo $SHELL;
type -a sed;
find -L /var/www/html/ -name 'template.php' 2>&1 | xargs sed -i 's/<body>/<body><div style=\"position: fixed; padding: 14px; background-color: #00ff00; width:100%; opacity: 0.5;\"><span style=\"color: #009900; font-size: 14px; font-weight: bold;\">DEVELOPMENT ENVIRONMENT<\/span><\/div>/g' 2>&1
echo "EOF";