PHPで画像を読み込むとURLに /public_html/ が入って読み込まない

PHPの勉強中にファイルや画像を読み込むのに$_SERVER[‘DOCUMENT_ROOT’]
を利用して読み込みをしていました。

しかし$_SERVER[‘DOCUMENT_ROOT’] .で読み込んでいるとincludeファイルは読み込むけどechoで画像のパスを出そうとしたらパスがxxxx.jp/public_html/image.jpgとなってしまい404エラーとなってしまいました。
こんな感じで書いていました。
require($_SERVER['DOCUMENT_ROOT'] . "/image.jpg");

public_htmlってなに?

解決策を調べる前にpublic_htmlについて調べてみることにしました。

その結果 public_html はホームページのデータを置くためのディレクトリとのことでした。
サーバーにpublic_html というフォルダがありそこに公開するためのデータを入れるようです。
念の為サーバーのディレクトリを調べてみましたが、public_html というフォルダは存在しておらず、よくわかりませんでしたが、とりあえずpublic_htmlという文字がURLに出るのは避けたいところです。

解決策

いろいろ試してみたもののpublic_htmlは消えず、そもそもよくわかっていないためpublic_htmlを消せる気がしないので結局パスはファンクションで呼び出すことにしました。

function.php側

function path(){
$path = 'https://programmer-life.work'; // 処理
return $path; // 結果を返す
}

header.phpなど

src="<?php echo path();?>/images.jpg"

これでpublic_htmlは消えました。

functionやheader.phpなどは下記方法で読み込めたので、画像やCSSなどは読み込んだ後の処理だからダメなのかなと思っていますが今の実力ではよくわからないです。

<?php include( $_SERVER['DOCUMENT_ROOT'] . '/functions.php'); ?>

<?php require( $_SERVER['DOCUMENT_ROOT'] . '/header.php');?>

phpはわかりやすそうかなと思っていましたが、やはり覚えるまでは大変そうです。

php

Posted by Nakamoto