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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

Q&A

解決済

2回答

1157閲覧

フォントファイル(.ttf等)をサーバーで使用する方法について

fullmoon311

総合スコア62

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

0グッド

0クリップ

投稿2022/12/30 13:22

編集2023/01/01 18:31

前提

本日、文字列を画像化したいという質問を投げたものです。

imagettftext() でファイルパスを渡す処理があります。

ローカル上では絶対パス(C://user/..../XX.ttf)を指定して画像化できていましたが、
サーバーにこのttfを上げて絶対PATH(WordPressのファイルパス)を指定しても読み込まれませんでした。

試したこと 例)
__DIR__から取得したフルパスを指定しました。
$font_path = "/home/xxxx/xxxxx.jp/public_html/test4.xxxxx.jp/wp-content/themes/xxxxx/font/Lovelo-LineBold.ttf";

$font_path = "/wp-content/themes/xxx/fonts/xxx.ttf";
$font_path = "https://aaa.jp/wp-content/themes/xxx/fonts/xxx.ttf";
$font_path = get_template_directory_uri(). "/fonts/xxx.ttf";
$font_path = get_template_directory(). "/fonts/xxx.ttf";
$font_path = "/fonts/xxx.ttf";

サーバー上に”インストール”する必要があるのだと思うのですが、
ただttfファイルがある場所を絶対PATHで指定するだけではだめなのでしょうか?

利用しているサーバーはXサーバーで、フォントをインストールする方法のマニュアルの記載が見当たりませんでした。

下記のインストール動作確認済みプログラムの中にはフォントに関するインストールはありません。
この画像化する機能は使えないということでしょうか?

https://support.xserver.ne.jp/manual/man_install_outside_program.php

よろしくお願いします。

明日試してみますが、Xサーバーのコマンドプロンプト的なもの?から
/wp-content/themes/xxx/fonts/xxx.ttf と打てば、インストールされるのでしょうか・・・?

Xサーバーのコマンドプロンプト?実行は調べてみます。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • ▲▲機能を動作するようにする

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

functions.php はBOMなしのUTF-8で保存されていることも確認しました。

phpinfo()のGDの項目も調べました。

GD Support enabled
GD Version bundled (2.1.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.8.0
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.5.13
WBMP Support enabled
XBM Support enabled
WebP Support enabled
BMP Support enabled
TGA Read Support enabled

補足情報(FW/ツールのバージョンなど)

ちなみにFTP接続でディレクトリを見たところ、/usr/share/syscons/fonts/ といったようなディレクトリは存在せず、WordPressのディレクトリとphpAdminのディレクトリだけがある状態です。

UNIXコマンド学習中で将来的にDockerを導入してバージョン管理をする予定があるのですが、src だとか そういう階層がないのが不思議です。
このサーバーを用意したのは私自身ではなく、会社の人間か外注さんになります。

今回フォントを入れたので私なので、場所は分かります。

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

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

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

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

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

AbeTakashi

2022/12/30 14:26

一番確実はのは変数や関数を使わずに全部文字列でフルパスで指定することですが、それは試したでしょうか? 絶対パスよりも確実かと思います。それともフォントがあるディレクトリのフルパスを把握されてないということでしょうか? であれば会社の方や外注さんにそのことを確認された方が良いとは思いますが。
fullmoon311

2022/12/30 21:36 編集

>一番確実はのは変数や関数を使わずに全部文字列でフルパスで指定する 引数に直接文字列で指定しても同じでした。 >フォントがあるフルパス このフォントをディレクトリに格納したのは私なので、場所は分かります。 下記試しましたが全てダメでした。 $font_path = get_template_directory(). "/fonts/Lovelo-LineBold.ttf"; $font_path = 'wp-content/themes/xxx/fonts/Lovelo-LineBold.ttf'; $font_path = 'http://svxxx.xbiz.ne.jp/wp-content/themes/xxx/fonts/Lovelo-LineBold.ttf'; $font_path = '/wp-content/themes/xxx/fonts/Lovelo-LineBold.ttf'; FTPでパーミッション777にもしてもダメでした。
AbeTakashi

2022/12/31 06:29 編集

それらはフルパスではないです。Xserverの共有サーバならおそらく「/home/サーバーID/独自ドメイン名/public_html/....???..../wp-content/themes/xxx/fonts/Lovelo-LineBold.ttf」という感じになると思います(sshでログインするなりして調べてみてください。)。これで指定するのが一番確実なはずです。__DIR__定数を使うものありかとは思いますが、まずはその辺を検証してみてください。
fullmoon311

2022/12/31 08:38

ありがとうございます。 __DIR__からファイルまでの正確なパス(/home/から始まるもの)を取得して指定しましたが、やはり結果は同じでした。 ttfファイルにはパーミッション777を与えて、パラメーターに渡す値はurlencodeしてみましたがダメでした。 いったい何が悪いのか全く分かりません...
AbeTakashi

2023/01/01 02:54

質問に出てる情報だけだとパスの件意外は何も分かりませんよ。https://www.php.net/manual/ja/function.imagettftext.php を参考にして、もう一度諸々チェックした方がいいのでは? そもそもimagettftext()がちゃんと動く環境で、実際に動いてるか?から始めるべきかと思います。
fullmoon311

2023/01/01 09:30

使用しているttfファイルを変えたところ、うまくいきました。 フルパスの指定はドキュメントルートではなくて、サーバーサイドからの絶対パスを指定するということが分かりました。
guest

回答2

0

自己解決

使用しているttfファイルを変えたところ、うまくいきました。

フルパスの指定はドキュメントルートではなくて、サーバーサイドからの絶対パスを指定するということが分かりました。ご迷惑をおかけいたしました。解凍してくださった方々、ありがとうございました。

投稿2023/01/01 09:31

fullmoon311

総合スコア62

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

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

0

php

1get_template_directory_uri() 23get_template_directory()

投稿2022/12/30 13:28

KazuhiroHatano

総合スコア7802

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

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

fullmoon311

2022/12/30 13:36

ありがとうございます。 $font_path = get_template_directory(). "/fonts/xxx.ttf"; としても結果は同じでした。
KazuhiroHatano

2022/12/31 00:36

そもそもget_template_directory()が使えるところでない(PHPのファイルに直接アクセスしていて、WordPressを介して実行されているのではない)とかはないですか? であればWPの関数ではなく__DIR__定数などからフォントのファイルまでのパスを得てください。 https://www.php.net/manual/ja/language.constants.magic.php そうではなく、フォントファイルへのパスは有効なものが得られているのであれば、パーミション、PHPや実行ファイルの文字エンコードとサーバーのファイルシステムの文字エンコードの不一致あたりを調べてみてください。
fullmoon311

2022/12/31 08:37

ありがとうございます。 __DIR__からファイルまでの正確なパスを取得して指定しましたが、やはり結果は同じでした。 ttfファイルにはパーミッション777を与えて、パラメーターに渡す値はurlencodeしてみましたがダメでした。 いったい何が悪いのか全く分かりません...
fullmoon311

2022/12/31 09:10

functions.php はBOMなしのUTF-8で保存されていることも確認しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問