質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1257閲覧

【laravel】ローカル環境でRDS内のデータを取得できない。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/11/07 07:32

編集2017/11/07 12:37

###わからないこと
いつもお世話になっております。
この度、ローカル環境にてAWSのRDSにあるデータを取得しようとしています。
ただ、namespace等の関係か、接続そのものができておりません。
下記のようにコードしております。

1.php <?php require_once dirname(__FILE__).'/SetDb.php'; use DB;

↑の「1.php」にて

use DB; class abc {  public function le(){    // インスタンスの生成 $db = new SetDb();   }   public function lean(){ $mysqlRDS = DB::connection('mysql'); } }

と記述して、接続をしようとしておりますが、classが見つからないや、「The use statement with non-compound name 'DB' has no effect」と出るなどエラーが発生しています。
設定のどこに誤りがある可能性がありますでしょうか?
どうかご教授いただけないでしょうか。

###追記②
↑の1.phpはphpファイルに含まれています。

2.php require_once dirname(__FILE__).'/SelectItems.php'; require_once dirname(__FILE__).'/1.php'; require_once dirname(__FILE__).'/gent.php'; require_once dirname(__FILE__).'/../../vendor/autoload.php'; $DataArrange = new 1(); $gent = new gent(); ... $dom = @DOMDocument::loadHTML($res); ... $DataArrange->le($pro);

↑にて
「Cannot declare class gent, because the name is already in use」のエラーが出ましたが、
「use App\Crawler\gent;」
に記述を変更したところ上記のエラーは消えました。
しかし、
「$gent = new \gent();」
とインスタンスを生成した段階でバックスラッシュを付けたのですが、クラスが見つからないと出てしまいます。

###更新 20:54

2.php namespace App\Http\Controllers\Crawlers; use App\Http\Controllers\Crawlers\SelectItems; use App\Http\Controllers\Crawlers\1; use App\Http\Controllers\Crawlers\gent; $RikunabiDataArrange = new abc();

↑の「$DataArrange = new abc();」にてクラスが見つかっておりません。

1.php namespace App\Http\Controllers\Crawlers; use App\Http\Controllers\Crawlers\SetDb; class abc {  public function le(){    // インスタンスの生成 $db = new SetDb();   }   public function lean(){ $mysqlRDS = DB::connection('mysql'); } }

↑はController内に記載しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Laravelなのにこのコードでは何をやりたいのかが全く分かりません。
require_onceを使うこととかほとんどありません。
use DB;はLaravel内だからFacadeで有効になってるだけなのでLaravel外っぽい1.phpでは使えません。

LaravelからRDSは.envで設定すればローカルからでも接続できます。
当然RDSがパブリックアクセス可なら。

投稿2017/11/07 08:42

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/07 08:50

ご回答ありがとうございます。 1.phpファイルはlaravel内にあります。 require_onceのご指摘ありがとうございます。 ただ、こちらをuseで対応すると、クラスが見つからない問題が発生してしまいます
退会済みユーザー

退会済みユーザー

2017/11/07 08:55

追記です。 RDSはパブリックアクセス可能でございます。 したがって、私のコーディングが単純な問題なのだと思います。
guest

0

ベストアンサー

エラー内容に対応した以下記事からクラスにネームスペースが必要なようです。
PHP Warning: The use statement with non-compound nameがでるのはグローバル脳
コマンドラインで扱う場合は、make:commandでコマンドクラスを作成するかroutes/console.phpでクロージャで書くかでaritisanコマンドを作って試してみて下さい。

投稿2017/11/07 07:43

aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/07 08:01

ご回答ありがとうございます。 上記namespaceを追加しましたところ、 「Cannot declare class gent, because the name is already in use」 と出たのですが、クラスを重複して用いてはおりません。。。 他に原因があるのでしょうか?
退会済みユーザー

退会済みユーザー

2017/11/07 08:18

上記は解決いたしました。 しかし、 「$gent = new \gent();」 とインスタンスの生成の段階でバックスラッシュを付けたのですが、クラスが見つからないとエラーが出てしまっています。
aro10

2017/11/07 09:57

kawaxさんの回答のように、Laravelでrequire_onceを使うことは基本的になくフレームワーク内外の組み合わせなどがややこしくなるので、コントローラかartisanコマンドの中で処理を行ってみててください。 Laravel外で処理を行うのであれば、Laravelの各機能のstandalone用に改修されたものがある場合はそれを使う必要があります。
退会済みユーザー

退会済みユーザー

2017/11/07 11:24

行ってみたのですが、やはりuseでは反応しませんでした・・・ 1.phpにてクローリングを行うのですが、ここでクラス指定をしていない/できないのが問題なのでしょうか?
aro10

2017/11/07 11:49

現状どうなっているのかがコードが更新されていないのでよくわかりません。 どのようにコードを修正して試していますか
退会済みユーザー

退会済みユーザー

2017/11/07 11:53

失礼いたしました。 質問欄に更新内容を記載いたしました。 ご確認ください
aro10

2017/11/07 12:33

2.phpにnew abc()は無いようですが・・ $RikunabiDataArrange = new le();が該当のコードだとすれば、useの下に直接コードを書いているのですか? またこれはコマンドライン用のプログラムですか、そうであればartisan make:commandで雛形を作った上でhandleメソッド内にプログラムを書く形です。 [Laravel 5.5 Artisanコンソール](https://readouble.com/laravel/5.5/ja/artisan.html)
退会済みユーザー

退会済みユーザー

2017/11/07 12:41

失礼いたしました。クラス名は修正しました。abc()の誤りです。 コマンドラインには載せておりませんでした。 PHPファイルを直接たたく形で対応しようとしていました。
aro10

2017/11/07 12:54 編集

素のPHPファイルを使う形だと、Laravelは色々な依存ファイルをcomposerのaotoload設定で読み込んでいたりbootstrapで起動処理をしているので、対応するほうが大変かと思います。 コマンドラインで使う場合はartisanコマンドを使ってください。(他からの呼出はArtisan::callで可能です。Laravel外からはProcessクラスやexec関数などで呼び出せます) APIとして実装であれば、Laravelのルート定義とコントローラで実装してみてください。
退会済みユーザー

退会済みユーザー

2017/11/08 02:23

ありがとうございます。 コマンドラインのほうで試したところ、うまくいきそうですので、そちらで進めます。 ただ別の問題が発生したため、改めて質問をさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問