セキュリティの関わる問題なので削除させていただきました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答3件
0
app/modules/test.php(自作フォルダ/ファイル) $nowdate=date("Y/m/d g:i:s"); WriteFinFile($fin_file,"START:$nowdate\n"); $sv_db=""; $sv_gzip_file=""; $file_cnt=0; $file_size=0; $sv_query=""; require_once "app/modules/cmdhive.php"; $cmdhive=CmdHive($username); if ( $OUTPUT_VERBOSE == "" and $OUTPUT_HEADER == "" ){ $cmd = $cmdhive . " -f $hql_file 2>$out_file"; }else{ $cmd = $cmdhive . " -f $hql_file 2>$out_file"; } if ( !($ifp=popen($cmd,"r")) ){ WriteFinFile($fin_file,"ERR:popen($cmd) error\n"); unlink($pid_file); exit(1); }
cmdhive.php function CmdHive($username){ $queuename=QUE_PRE_NAME.$username.QUE_POST_NAME; if(QUENAME_FLG==1){ $cmdhive=CMD_HIVE." ".OPT_HIVE." -hiveconf tez.queue.name=$queuename -hiveconf mapreduce.job.queuename=$queuename"; }else{ $cmdhive=CMD_HIVE." ".OPT_HIVE; } return $cmdhive; }
function CmdHive($username)のコードをtest.phpに書くと問題なく動作するのですが、、
require_onceすると$out_fileが作られなくなります。
require、includeも全てダメでした
投稿2018/06/24 07:39
退会済みユーザー
総合スコア0
0
cmdhive.php <?php /////////////////////////////////////////////////////////////////// //クエリ実行者識別 /////////////////////////////////////////////////////////////////// function CmdHive($username){ $queuename=QUE_PRE_NAME.$username.QUE_POST_NAME; if(QUENAME_FLG==1){ $cmdhive=CMD_HIVE." ".OPT_HIVE." -hiveconf tez.queue.name=$queuename -hiveconf mapreduce.job.queuename=$queuename"; }else{ $cmdhive=CMD_HIVE." ".OPT_HIVE; } return $cmdhive; }
投稿2016/11/28 06:19
総合スコア227
0
ベストアンサー
cmdhive.php の先頭行に <?phpを追加してください。
PHPは include include_once require require_once で指定したファイルに <?phpが存在しない場合、単にそのファイルの内容を レスポンスにそのまま出力します。
(自動で ファイルの先頭に?>が補われたような動作になります。)
cmdhive.php
php
1<?php 2function CmdHive($username){ 3
投稿2016/11/28 02:00
編集2016/11/28 02:02総合スコア7918
回答ありがとうございます。
<?php
require_once "app/config/app.php";
///////////////////////////////////////////////////////////////////
//クエリ実行者識別
///////////////////////////////////////////////////////////////////
function CmdHive($username){
$queuename=QUE_PRE_NAME.$username.QUE_POST_NAME;
if(QUENAME_FLG==1){
$cmdhive=CMD_HIVE." ".OPT_HIVE." -hiveconf tez.queue.name=$queuename -hiveconf mapreduce.job.queuename=$queuename";
}else{
$cmdhive=CMD_HIVE." ".OPT_HIVE;
}
return $cmdhive;
}
?>
faunctionのみ記載してしまっておりましたが
実際はこの形なのですが
それでもううまくいきません
「うまくいきません」を具体的にお願いします。エラーログの内容など確認されましたか?
元のコードでもCmdHiveが未定義などのエラーが出力されているはずです。
エラーとしてrequire等で別ファイルを指定すると
$out_fileが発行できないためそこでエラーが起きてします。
「エラーとしてrequire等で別ファイルを指定すると」何をおっしゃっているのかよくわかりません。
わかりにくくてすみません
require等で
"app/modules/cmdhive.php"
を実行させようとすると
$out_fileが作成出来ないとエラーになります。
実際に
test.php内で
"app/modules/cmdhive.php"
の処理を直接書き込んだ場合、違うコントローラーのphpファイルから呼び出した場合は問題なく動作していたので
パスがおかしい、コードが間違えているという可能性は低いと考えられ
原因はrequireが原因ではないかと考えてはいるのですが解決策がわからず質問させていただきました。
> require等で"app/modules/cmdhive.php"を実行させようとするとエラーになります。
どういうエラーになるのでしょうか? エラーメッセージが出た場合はそのエラーメッセージに解決の糸口が含まれています。
$out_fileが作成されない原因として
requireのやり方に問題があるかもしれないとのことで
いろいろ試して見たいと思います。
情報を出していただけないようなので私ではお役に立てないようです。
解決できるよう祈ってます。
controllerのphpファイルと
素のPHPが入るでrequireしたときに帰ってくる値がちがうようです。
エラー内容が
$out_fileが作成されない原因がrequireのやり方ではなく
controllerのphpファイルと素のPHPが入るでrequireしたときに帰ってくる値がちがうので
それを分けて書いてあげないといけないとのことなのですが
同じコードでrequireの返り値が宣言されるファイルで変わる原因は仕様なのでしょうか・・
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。