OS…Centos7
Database…Postgresql9.5
PHP…7.5
データベースに登録されているユーザーをメールユーザーとして登録するプログラムを作っていますが、上手くいきません。
以下は、実行しているプログラムです。
PHP
1#!/usr/bin/php 2<?php 3 //タイムゾーンの初期化 4 date_default_timezone_set('Asia/Tokyo'); 5 $FILE_P="/etc/passwd"; 6 //データベースと接続 7 $pg1_conn = new PDO("pgsql:host=XXX.XXX.XXX.XXX;port=5432;dbname=database;user=user;password=pass"); 8 $query = "SELECT table.* "; 9 $query .= "FROM table "; 10 $query .= "WHERE (table.chk = -1)"; 11 echo $query."\n"; 12 //SQLクエリ実行 13 $stmt = $pg1_conn->query($query); 14 $stmt->execute(); 15 while(1){ 16 $result = $stmt->fetch( PDO::FETCH_ASSOC ); 17 if ($result == false) { 18 break; 19 } 20 $user_name = $result['user_name']; 21 $cmd = 'txt=`cat '.$FILE_P.' | grep -e "^'.$user_name.':"`'; 22 exec($cmd); 23 $user_id = $result['user_id']; 24 $group_id = $result['group_id']; 25 $home_dir = $result['home_dir']; 26 $cmd = 'echo "USER_ID:${'.$user_id.'} GROUP:${'.$group_id.'} HOME_DIR:'.$home_dir.'"'; 27 exec($cmd); 28 $cmd = 'cp -rf /etc/skel/* '.$home_dir.'/'; 29 exec($cmd); 30 $cmd = 'chown -R '.$user_name.' '.$home_dir; 31 exec($cmd); 32 $cmd = 'chmod 711 '.$home_dir; 33 exec($cmd); 34 $cmd = 'chgrp -R '.$user_name.' '.$home_dir; 35 exec($cmd); 36 $cmd = 'usermod -s /bin/bash '.$user_name; 37 exec($cmd); 38 } 39 $pg1_conn = null; 40?>
実行結果は、
sh: USER_ID:${} GROUP:${} HOME_DIR:/home/userA: 誤った代入です chown: ユーザ指定が不正: `userA' chgrp: 無効なグループ: `userA' usermod: ユーザ 'userA' は存在しません
テーブルの「user_id」「group_id」はNullです。
以前、テキストファイルをシェルスクリプトで読み込んでユーザー登録していたときは、USER_ID、GROUPは自動で設定されました。
そのときのテキストデータは
userA:passA:::userA:/home/userA:/bin/bash
userB:passB:::userB:/home/userB:/bin/bash
userC:passC:::userC:/home/userC:/bin/bash
このようなものです。
どなたか、助けていただけませんか。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー