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

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

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

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

PHP

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

Q&A

2回答

1759閲覧

PHP の bcadd を WordPress で使いたい

nikumans

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/07/18 03:54

前提・実現したいこと

WordPressで bcadd() を使って、ランダムな文字を生成したいです。

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

下記エラーのように、bcadd() が使えないようです。

Fatal error: Uncaught Error: Call to undefined function bcadd() in /.../functions.php

試したこと

下記になりまして、bcadd() で上のエラーになるものの、もし他にも問題があれば教えて頂ければ幸いでございます。

<?php define('MAP', '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'); define('BASE', '1000000000'); function my_encode( $data ){ $data = str_pad($data, 10, '0', STR_PAD_LEFT); $pfx = MAP[ strpos($data, bcadd($data, 0))]; $chars = strlen(MAP); $hash = bcadd($data , BASE); $str = ""; do { $str = MAP[ bcmod($hash, $chars) ] . $str; $hash = bcdiv($hash, $chars); } while ($hash >= 1); return $pfx . $str; } $data = 1; $result = my_encode( $data ); var_dump( $result );

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

WordPress最新にしました。PHPも最新です。
よろしくお願い致します。

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

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

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

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

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

m.ts10806

2019/07/18 03:58

>WordPress最新にしました。PHPも最新です。 もしかしたら数分後に次のバージョンが出ている可能性もあるので具体的なバージョン値を提示しておくべきかと思います。
guest

回答2

0

WordPressの問題じゃなく単にインストールされてないってことじゃないですかね

https://www.php.net/manual/ja/bc.installation.php

bcmath ist not installed automatically with php 7 on linux (ubuntu server)

You have to use: sudo apt-get install php-bcmath

投稿2019/07/18 04:00

KazuhiroHatano

総合スコア7804

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

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

nikumans

2019/07/18 04:42

すみません、インストールというのは、どのような手続きでするのでしょうか? あと「count」や「strip_tags」などはインストールせずに使えるのに、どうして使えないものがあるのでしょうか? そんなことはWordPressの開発者さんに聞いてくれという話でしょうがw、あまり使われないからとかですかね? 他にも結構使えない関数ってあるのでしょうか?
KazuhiroHatano

2019/07/18 04:49

PHPの関数はサーバーにインストールしないと使えないものがちょくちょくあって PHPのバージョン、Windows版かLinax版か、CGI版かモジュール版かで いろんなものが入ってたり入ってなかったりします 共用サーバーでSSH使えないとか サーバーに対して管理者権限がないとかなら 入ってないものは諦めるしかないですかね
nikumans

2019/07/18 04:56

なるほど。するとインストールの手続きとやらを完了させるためには、➀でなく➁ということですか? ➀自分がfunctions.phpに何かを書けば完了。 ➁契約しているサーバー会社さんへの問い合わせて、そちらで対処してもらって完了。
KazuhiroHatano

2019/07/18 05:59 編集

使っているサーバーがVPSや専用サーバーならばSSHの接続の方法や サーバーの管理者権限をもらっているはず、または管理画面でわかるはずなので 自分でそれを使って件のコマンドでインストールですね サーバー会社にやってもらうってのはまあないかと思います SSHの接続方法はどこどこでわかるので自分でやってください っていう感じに言われるだけと思います 共用サーバーなら入ってないPHPの機能はほぼ諦めるしかないでしょう もしかしたらCGI版ならただ入っているけど使ってないだけで php.iniの記述でもしかしたら使えるようになるかもしれませんが 何を入れてるかはサーバー次第です
nikumans

2019/07/18 06:08

結構高いサーバーを契約したので、だいじょうぶかなとは思うのですが、 とりあえず「>件のコマントでインストール」を伺いたいのです。 ご回答に書いてある文字列がコマンドだと思うのですが、それはfunctions.phpに書いてもダメですよね?何度もすみませんが、どこに書くものなのですか?
mikkame

2019/07/18 06:14

@KazuhiroHatanoさん - cPanelとかだったら共用サーバでも、管理画面からphp extenstionの追加、削除できることもある - サーバ会社(マネージド契約)とかだったらやってもらえると思います月数万とか払っててまともな会社なら 環境によって様々ですので、決めつけはあまり良くないと思います。 まあ、個人で、とか小規模で、であればKazuhiroHatanoさんが言っていることがほとんどが正解ですが・・・ --- bcmathじゃなくてgmpが入っていることもある(gmpはbcmathじゃない方の大きな数字を扱うやつ)のでそちらも確認を
nikumans

2019/07/18 06:16

個人です。年間2万円ほどのZ.comサーバーです。失礼致しました。
nikumans

2019/07/18 06:23 編集

たぶん「ならZ.comサーバーの管理画面から件のコマンドを入力してください」とかになると思うのですが、管理画面のどの場所ですか? 「その場所はZ.comに聞いてください」とかではなくて、”こういうのを入力する画面” という、”一般に膾炙した名称” があると思うのですが、それはわかりませんか? "管理画面" とかじゃなくて "htaccessの入力画面" のような、そういう名称が知りたいということです。
KazuhiroHatano

2019/07/18 06:19

@mikkameさん 情報訂正ありがとうございます
mikkame

2019/07/18 06:26

z.comもwebhosting 、 z.com cloudで別れててそれぞれ何種類かプランがあるので一概に答えられないと思いますし > こういうのを入力する画面 というのは KazuhiroHatanoさんが書かれているSSHしてなんかするってことがほとんどです。
mikkame

2019/07/18 06:27

z.comに聞いてもらう方が早そうですね
nikumans

2019/07/18 06:31

わざわざこちらの都合に合わせたサーバーのリンク先まで調べて頂き感謝します。うーわ、ぜんっぜんいみわかんないですねwww諦めます。ありがとうございました。
nikumans

2019/07/18 06:31

そうですね。Z.comに聞いてみます。
nikumans

2019/07/18 06:33

あ、それか、質問にある関数と同じような機能を、 bcadd() を使わずにやる方法などございませんでしょうか?もし思いつきましたら宜しくお願い致します。
KazuhiroHatano

2019/07/18 06:43

その答えはすでにこのスレッドのmikkameさんのコメントの中に
nikumans

2019/07/18 06:48

むずかしそうですね。たびたびありがとうございました。
guest

0

PHPにはライブラリ、パッケージと呼ばれるもので概ね2種類あります。

PHPで作られたPHP向けのライブラリ(Wordpressとかもここに含む)と
C言語*1で作られたPHP向けのライブラリです。

PHPで作られたPHP向けのライブラリは、PHPファイルを設置するだけで利用できます。
C言語でできたライブラリはサーバーにインストールする必要があります。
(基本的に管理者権限が必要、SSHしてyum intall とか apt-get install しなければらない)

bcmathは、後者に分類されています。

*1 厳密にはC++とかGOとか、PHPをバイナリにコンパイルするでも良い、何でもいいんだけどバイナリでできたやつ

投稿2019/07/18 06:22

mikkame

総合スコア5036

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

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

nikumans

2019/07/18 06:27

契約者本人なので、管理者権限はあると思います。つまり下記が必要ということですね。 >SSHしてyum intall とか apt-get install でこれについてですが、4つの英単語の意味が分からない人間に対して説明できますか?なんと説明しますか?
mikkame

2019/07/18 06:28

たぶん、これらの単語がわからないと、対応するのが困難ですので、プロの人に頼むのが良いでしょう。 素人が車のパーツ交換するみたいな難易度です
nikumans

2019/07/18 06:31

それは事故がこわいですね。諦めます。ありがとうございました。
nikumans

2019/07/18 06:33

それか思ったんですけど、質問にある関数を bcadd() を使わずにやる方法など思いつきましたら宜しくお願い致します。
mikkame

2019/07/18 06:36

本人契約でも管理者権限があるかどうかは不明です。 共用サーバの場合は、アパートみたいなものです。 アパートの契約者本人だからといって、排水管をいじったり、オール電化に変えたりてきませんでよね? 共用サーバの場合は、一室の主人というだけで、模様替え(WP置いたり)ぐらいしかできません。 今、自分がどの賃貸経営会社(z.com)のどの物件(契約プラン)かわからなければ、回答ができませんし 賃貸経営会社だけ伝えられても、どの物件にお住まいかわからなければ、何ができるかも答えられません。 (家賃が2万円ぐらいの物件、といわれてもこちらでは特定できません) mts10806さんもおっしゃっていますが、質問時には極力具体的な情報を添付するようにした方が良いかと思います
mikkame

2019/07/18 06:37

bcadd だけ、かつある程度数値の上限が見込めるのであれば substrで上下分割し、上下でそれぞれ計算し、下で繰り上げがあったら、上に+1し、最後に上下を連結する という方法で対応できるかと思います
nikumans

2019/07/18 06:48

ありがとうございます。調べてみます。大変勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問