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

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

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

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

Q&A

3回答

1360閲覧

PHPの出力先の探し方を教えていただきたいです。

rmcpk208

総合スコア0

PHP

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

0グッド

0クリップ

投稿2021/06/16 04:44

編集2021/06/17 03:51

前任者が制作したECサイトの修正案件を抱えておりまして、
PHPで出力されているファイルデータを修正したいのですが、
場所が分かりません。

わかる方いらっしゃいましたら
探し方などアドバイスいただけると助かります。

よろしくお願いいたします。

該当のソースコード

議題のページはHTMLです。
商品の詳細ページのヘッダー部分が修正部分になります。

修正したい部分に下記が記述されており、出力元をたどらなくてはなりません。

PHP

1 2<?php 3 define('DIR_WS_BASE', dirname(__FILE__) . '/'); 4 define('DIR_WS_INCLUDES', DIR_WS_BASE . '../../ec/zen/'); //phpファイル郡 5 define('ZENCART_DIR', DIR_WS_BASE . '../../ec/'); //Zencart設置ディレクトリ 6 require(DIR_WS_INCLUDES . 'application.php'); 7 echo zen_wilco_make_header_html(); 8?> 9

echo zen_wilco_make_header_html(); の部分に下記のHTMLが入っているはずです。

HTML

1nav id="header-menu" style="display: none;"> 2 <ul class="hd-menu-box"> 3 <li class="hd-menu dtpc"><a class="hd-menu-link btn-3" href="https://login.wilco.jp/ec/index.php?main_page=create_account"><span>新規登録</span></a></li> 4 <li class="hd-menu dtpc"><a class="hd-menu-link btn-3" href="https://login.wilco.jp/ec/index.php?main_page=login"><span>ログイン</span></a></li> 5 <li class="hd-menu dtpc"><a class="hd-menu-link btn-3" href="https://login.wilco.jp/ec/index.php?main_page=recentry"><span>注文履歴</span></a></li> 6 <li class="hd-menu dtpc"><a class="hd-menu-link btn-3" href="https://login.wilco.jp/ec/index.php?main_page=favorite"><span>検討中</span></a></li> 7 <li class="hd-menu dtpc"><a class="hd-menu-link btn-3" href="https://login.wilco.jp/ec/index.php?main_page=shopping_cart"><span>カート</span></a></li> 8 <li class="hd-menu smp"><a class="hd-menu-link btn-3" href="/docs/technical-data/"><span>ねじの資料</span></a></li> 9 <li class="hd-menu smp"><a class="hd-menu-link btn-3" href="/catalog/form_wilco/inquiry.php"><span>お問い合わせ</span></a></li> 10 <li class="hd-menu smp"><a class="hd-menu-link btn-3" href="/catalog/form_wilco/index.php"><span>カタログ申し込み</span></a></li> 11 <li class="hd-menu smp"><a class="hd-menu-link btn-3" href="/guide/"><span>ご利用案内</span></a></li> 12 <li class="hd-menu smp"><a class="hd-menu-link btn-3" href="/information/calendar/"><span>営業カレンダー</span></a></li> 13 </ul> 14 <p>ようこそ<br>&nbsp;ゲスト&nbsp;様</p> 15 </nav>

試したこと

インクルードファイルは基本的にincフォルダに格納されているのですが、
全て見ましたが見つかりませんでした。

htdocs内で下記キーワードを検索しても見つかりません。
zen_wilco_make_header_html
id="header-menu"
function zen_wilco_make_header_html

使用ツール:Devas
https://forest.watch.impress.co.jp/library/software/devas/

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/06/16 04:47

どういう検索の仕方をしたのかわかりませんが、ファイルやディレクトリも複数横断するような検索の仕方をしているのでしょうか。
itagagaki

2021/06/16 04:50

zen_wilco_make_header_html を検索したというのは、 zen_wilco_make_header_html が名前にあるファイルを検索したのか、 zen_wilco_make_header_html を内容に含むファイルを検索したのか、 どちらですか? `inc`などのあるディレクトリで `grep -R zen_wilco_make_header_html .` とかやってみましたか?
m.ts10806

2021/06/16 04:53

メソッド定義は動的にはできないはずなので、きちんとgrepすれば出るのでは。
rmcpk208

2021/06/16 04:58 編集

迅速なご連絡誠にありがとうございます。 FTPソフトのファイルジラにてサーバー内の検索を行いました。 望遠鏡アイコンからzen_wilco_make_header_htmlのファイル名で検索をかけた形です。 当方フロントエンドがメインでして、PHPに関しましてはスクールレベルでして、、echoでアンダーバーを使った記述が理解できおりません。。 サイトの規模が大きいため母体のHTMLファイルに複数インクルード構文を記述し出力されています。
itagagaki

2021/06/16 05:05 編集

zen_wilco_make_header_html は関数名です。 この関数を呼び出し、返された文字列を echo で出力しているわけです。 この1行のコードではデータファイルを作成してはいないので、もしこの1行でデータファイルが作成されているはずだということであれば、関数 zen_wilco_make_header_html の中身(またはさらにその先)でファイル作成が行われているということになります。 とにかく、関数 zen_wilco_make_header_html の実体のコードが記述されたPHPファイルを探し出す必要がありますね。なので、たとえば私が上で書いたgrepコマンドで探す必要があるのですが、サーバーにシェルログインはできないのですか? もしできないのであれば、FileZillaなりなんなりで全ファイルをローカル環境にダウンロードして、ローカルで検索してみる必要があるでしょうね。
m.ts10806

2021/06/16 05:10

>zen_wilco_make_header_htmlのファイル名で検索をかけた形です。 ファイル名ではないです。 まず幾度となく出てきている「grep」について調べてください。 ソースコード内を走査する必要があります。
rmcpk208

2021/06/16 05:11

ご協力いただきましてありがとうございます。 zen_wilco_make_header_html を検索したというのは、 zen_wilco_make_header_html が名前にあるファイルを検索したのか、 zen_wilco_make_header_html を内容に含むファイルを検索したのか、 どちらですか? ↓ zen_wilco_make_header_html が名前にあるファイルを検索しました。 `inc`などのあるディレクトリで `grep -R zen_wilco_make_header_html .` とかやってみましたか? ↓ ファイルジラにて検索ディレクトリ「httpdocs」内で下記を条件「いずれかの条件に一致」「名前」「部分一致」にて検索しましたが検索結果はありませんでした。   grep -R zen_wilco_make_header_html
退会済みユーザー

退会済みユーザー

2021/06/16 05:21

インクルードするファイルって、htdocsなどの公開用ディレクトリの外に置かれることもあるので、FTPでアクセスできる範囲だけではないかもしれません。
rmcpk208

2021/06/16 05:28

私が上で書いたgrepコマンドで探す必要があるのですが、サーバーにシェルログインはできないのですか? もしできないのであれば、FileZillaなりなんなりで全ファイルをローカル環境にダウンロードして、ローカルで検索してみる必要があるでしょうね。 ↓ いったんgrepコマンドについて調べてみる必要がありそうです。 サーバーにシェルログインですが、できたとしても責任者の許可が必要そうです。 私の権限ですぐできそうなのはローカル環境にダウンロードの方法なのですが、方法としては 全てダウンロードした後に 特殊なツールを使って検索するようなものなのでしょうか。
rmcpk208

2021/06/16 05:36

インクルードするファイルって、htdocsなどの公開用ディレクトリの外に置かれることもあるので、FTPでアクセスできる範囲だけではないかもしれません。 ↓ ありがとうございます。 アクセス範囲外だった場合、考えられる場所とすればどちらが考えうるのでしょうか。 お手数でなければご教授お願いいたします。
rmcpk208

2021/06/16 07:56

FTPでのアクセスしか出来ないのであれば サイト上のファイルを全てダウンロードする Windowsでgrepしたい。コマンドは使わずに簡単に。等を参考にして「ファイル内の文字列として」function zen_wilco_make_header_html(を検索する 該当するファイルを修正する アップロードする という感じになります。 ↓ 参考サイトを見ながら検索してみましたが、 /httpdocsフォルダ内には function zen_wilco_make_header_html 上記の記述は見つかりませんでした。 itagagakiさんのDevasでローカル検索しても上記の記述はありませんと表示されます。 こうなってくるとm6uさんのご指摘通りtdocsなどの公開用ディレクトリの外ということになりますでしょうか・・・
m.ts10806

2021/06/16 08:06

そもそもそのPHPファイルはどこから呼ばれてるんでしょうね。 そのファイルに提示されたコードしかないなら自体がincludeなりrequireされてるのは確実です。 ファイル名(.php抜き)で走査してみては。
rmcpk208

2021/06/16 08:22

ありがとうございます。 また明日調査してみます!
rmcpk208

2021/06/17 00:38 編集

ファイル名(.php抜き)で走査してみては。 ↓ Devasを使って function zen_wilco_make_header_html を.php抜きで検索してみましたが駄目のようです。 出力された中身はスマホ用のgnaviメニューなのですが、その一部記述文 <nav id="header-menu" style="display: block;">を 検索しても/httpdocsフォルダ内には見つかりませんでした。 この場合、httpdocsの外のフォルダのどこかということになるのでしょうか。 「インクルードするファイルって、htdocsなどの公開用ディレクトリの外に置かれることもあるので、FTPでアクセスできる範囲だけではないかもしれません。」 ↓ 勉強不足ですいません。FTPのアクセス範囲外の場合はどのような調べ方があるのでしょうか。
m.ts10806

2021/06/17 00:38 編集

いえ、今回提示されたコードが書かれているPHPのファイルの話です。 hoge.phpなら「hoge」が検索ワードです。 何というファイル名ですか? コードはこれだけですか?
rmcpk208

2021/06/17 00:43

今回提示されたコードが書かれているPHPのファイルの話です。 hoge.phpなら「hoge」が検索ワードです。 何というファイル名ですか? コードはこれだけですか? ↓ ファイル名は不明です。echo zen_wilco_make_header_html(); しかヒントがない状態でして・・ 関数ということはわかりまして定義分も、出力されている中身も/httpdocsフォルダ内にないことはわかっている状況です。
m.ts10806

2021/06/17 00:47

不明??? どうやってそのコードを得たんですか?
rmcpk208

2021/06/17 00:53 編集

不明??? どうやってそのコードを得たんですか? ↓ 今回修正対象となる母体HTMLがあります。修正したい部分が  echo zen_wilco_make_header_html(); と記述があり、PHPで出力されております。 echo zen_wilco_make_header_html();をたどり修正したいのですが、定義分、内容ファイルが見つからない状態なのです。
m.ts10806

2021/06/17 00:55

その記述があるファイル名が分からないという意味がわかってません。
rmcpk208

2021/06/17 01:00

その記述があるファイル名が分からないという意味がわかってません。 ↓ すいません、修正対象となる母体のHTMLファイル名はわかっておりますが、商品詳細ページでして700ページほどあります。 たとえば、PE.htmlなど様々なファイル名があります。
m.ts10806

2021/06/17 01:17

もっと分からなくなりました。 結局どうやってそのコードを得て、質問に提示したのか。
rmcpk208

2021/06/17 01:32

もっと分からなくなりました。 結局どうやってそのコードを得て、質問に提示したのか。 ↓ 普通の作りではないんでしょうか・・・ echo zen_wilco_make_header_html();をどうやって得ているのかは定義分を確認するしかないのですが、 /httpdocsフォルダ内の検索を zen_wilco_make_header や 中身の id="header-menu" などでないということであれば /httpdocsの同じ階層のフォルダに存在する可能性はあるのでしょうか。
m.ts10806

2021/06/17 01:43 編集

いえですから、そのコードをあなたがどうやって得たのかと聞いています。 誰から?どこから?など。
rmcpk208

2021/06/17 01:52

いえですから、そのコードをあなたがどうやって得たのかと聞いています。 誰から?どこから?など。 ↓ すいません、「得た」という解釈が難しいです。 私は修正依頼を受けて修正部分を特定し echo zen_wilco_make_header_html();の中身を修正しなければならない 状況です。 誰から?↓ echo zen_wilco_make_header_html();を記述したのは前任者です。 どこから?↓ 不明ですが、おそらく私と同じPCで作業はしていたと思います。
m.ts10806

2021/06/17 01:56

んー。そんなに難しいこと問うてないはずなんですが、ズレますね。 質問に投稿するときに、コピペしてきたの?自分で手で打ったの? コピペしたならどこから? 手で打ったなら何を見ながら? これでどうですか
rmcpk208

2021/06/17 02:01

質問に投稿するときに、コピペしてきたの? ↓ お手間を取らせて申し訳ありません。 かいつまんではいるのですが、echo zen_wilco_make_header_html();は母体のHTMLからコピペしています。 実際は下記になりますが、最初に提示したほうがよかったでしょうか。 <?php define('DIR_WS_BASE', dirname(__FILE__) . '/'); define('DIR_WS_INCLUDES', DIR_WS_BASE . '../../ec/zen/'); //phpファイル郡 define('ZENCART_DIR', DIR_WS_BASE . '../../ec/'); //Zencart設置ディレクトリ require(DIR_WS_INCLUDES . 'application.php'); echo zen_wilco_make_header_html(); ?>
m.ts10806

2021/06/17 02:07

やあでてきましたね。省略するとろくなことになりません。 質問本文更新しておいてください。 パスに../とある時点でそのファイルより上の階層にあるのは確実です。 でも母体のHTML? そのコードのあるファイルの拡張子は.htmlですか?.phpですか?(幾度となく聞いています) 確認してそれも追記しておいてください。
rmcpk208

2021/06/17 03:08

でも母体のHTML? そのコードのあるファイルの拡張子は.htmlですか?.phpですか?(幾度となく聞いています) 確認してそれも追記しておいてください。 ↓ 追記いたしました。 拡張子は.htmlになります。
rmcpk208

2021/06/17 04:21

私なりに編集してみました。ご指摘有ればお願いいたします。
guest

回答3

0

eclipseなどIDEにローカルに全部ソースコード取り込んで「宣言を開く」機能で確認するという方法もあります。
プロジェクト内のgrepも可能です。

質問の追記を受けて

↓ならこのコードが書かれているファイルから2つ上がったところにある
ecディレクトリの配下のzenディレクトリ配下のapplication.phpから辿れると思います。

php

1<?php 2define('DIR_WS_BASE', dirname(FILE) . '/'); 3define('DIR_WS_INCLUDES', DIR_WS_BASE . '../../ec/zen/'); //phpファイル郡 4define('ZENCART_DIR', DIR_WS_BASE . '../../ec/'); //Zencart設置ディレクトリ 5require(DIR_WS_INCLUDES . 'application.php'); 6echo zen_wilco_make_header_html();

ただ、Zencartプラグインっぽいので、簡単には見つからないかもしれませんし(更に辿っていく必要があるかもの意)
htmlがベタで書いてあるとも限らないのでご注意を。
プラグイン改修はおおよそ例外なく茨の道です。
前任者が何も残してないなら自分でPHP勉強するしかないと思います。

投稿2021/06/16 05:18

編集2021/06/17 03:19
m.ts10806

総合スコア80850

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

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

rmcpk208

2021/06/17 03:33 編集

すいません、PHPはまだ勉強不足な部分も多々あるのですが、application.phpを開くと内容は下記が記述されておりました。 私にはそれらしいヒントが見当たらないのですが、専門家から見てわかることはありますでしょうか。 ` <?php @ini_set('display_errors', false); //error_reporting(version_compare(PHP_VERSION, 5.3, '>=') ? E_ALL & ~E_DEPRECATED & ~E_NOTICE : version_compare(PHP_VERSION, 6.0, '>=') ? E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT : E_ALL & ~E_NOTICE); require(DIR_WS_INCLUDES . 'security.php'); if (file_exists(DIR_WS_INCLUDES . 'local/settei.php')) require(DIR_WS_INCLUDES . 'local/settei.php'); require(DIR_WS_INCLUDES . 'settei.php'); define('IS_ADMIN_FLAG', 'true'); if ($za_dir = @dir(DIR_WS_INCLUDES . 'auto_load')) { while ($zv_file = $za_dir->read()) { if (preg_match('/.php$/', $zv_file) > 0) include(DIR_WS_INCLUDES . 'auto_load/' . $zv_file); } $za_dir->close(); } $db = new queryFactory(); if (!$db->connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE, USE_PCONNECT, false)) die('DB Error'); $configuration = $db->Execute('select configuration_key as cfgkey, configuration_value as cfgvalue from ' . TABLE_CONFIGURATION, '', $use_cache, 150); while (!$configuration->EOF) { define(strtoupper($configuration->fields['cfgkey']), $configuration->fields['cfgvalue']); $configuration->MoveNext(); } require_once(DIR_WS_INCLUDES . 'session.php'); if (!defined('TABLE_AUTO_LOGIN')) define ('TABLE_AUTO_LOGIN', DB_PREFIX . 'auto_login'); include(ZENCART_DIR . 'includes/functions/extra_functions/auto_login.php'); zen_auto_login(); ?> `
m.ts10806

2021/06/17 03:36

回答に書いたとおり 手で辿らずツールの力を借りる。 対象フォルダ(ec)含めて全部ダウンロードしてgrep もしくはIDEで定義をたどる機能
m.ts10806

2021/06/17 03:38

プラグインのバージョンも不明というのもありますが、独自に改修されたりしていたら尚更他人には手を出せないので、今回の答えだけ求めるのではなく、きちんとPHP書けるようになることが最優先に思います。 デバッグ含めて開発環境の整備も必要です。
rmcpk208

2021/06/17 06:07

ありがとうございます。 精進して勉強いたします。
guest

0

FTPでのアクセスしか出来ないのであれば

  1. サイト上のファイルを全てダウンロードする
  2. Windowsでgrepしたい。コマンドは使わずに簡単に。等を参考にして「ファイル内の文字列として」function zen_wilco_make_header_html(を検索する
  3. 該当するファイルを修正する
  4. アップロードする

という感じになります。


適切なPHP開発環境(VSCodeやPhpStorm等のIDEやエディタ)を使えば、
echo zen_wilco_make_header_html();
からクリック一つで関数定義ファイルにジャンプ出来たりもしますので、今後も同じような事をされるのであれば開発環境を整えることをお勧めします。

投稿2021/06/16 05:14

編集2021/06/16 05:18
tanat

総合スコア18713

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

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

rmcpk208

2021/06/16 05:39

適切なPHP開発環境(VSCodeやPhpStorm等のIDEやエディタ)を使えば、 echo zen_wilco_make_header_html(); からクリック一つで関数定義ファイルにジャンプ出来たりもしますので、今後も同じような事をされるのであれば開発環境を整えることをお勧めします。 ↓ それはすごいですね! VSCodeを使っているのですが、お手数でなければ設定方法等のサイトなど教えていただけると幸いです。
tanat

2021/06/16 06:02

VSCodeについてはあまり知りませんが `VSCode PHP 関数ジャンプ`あたりをキーワードにして調べてみて下さい。 PhpStormの場合はデフォルト設定でジャンプ出来ます
guest

0

便利なツールや開発環境を使っていない前提で説明します。

その「zen_wilco_make_header_html」が出現したファイルの中で、
include(_once)やrequire(_once)のキーワードで示されている外部ファイルを、
なにかメモに書き出します。

相対パスで記述されていたり、
絶対パスで記述されていたりするので、
読み解いたところにある該当ファイルを調べて
「zen_wilco_make_header_html」を含むかどうか、
もしもまたinclude(_once)やrequire(_once)などがあればもう一度メモに書き出して、
include(_once)やrequire(_once)によって辿れるものを全部追っかけるつもりでいてください。

関係するファイルを全部押さえてから、
その「zen_wilco_make_header_html」が出現するところを探します。

あと、可能なら、
php.iniも特定して(phpinfo()を駆使すればサーバー内の絶対パスがわかるはず)、
include_pathも確認するべきかもしれません。
include_path string
絶対パスや相対パスでなく指定されるファイルは、
include_pathの定義に従って検索されたりしますので。

投稿2021/06/16 05:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問