PHPが実行できない

パピーを名犬にするための技、テクニック

モデレータ: 暇人, YoN, nyu

返信する
yuknak
記事: 38
登録日時: 21/05/15(土) 12:11

PHPが実行できない

投稿記事 by yuknak »

いつもお世話になっています。
Fossapup64 9.5 で Perl/PHPを利用しようとしています。
Perlは実行できていますが、PHPが実行できません。
PPMで php_7.4+75 / php-cgi_7.4+75 / php-fpm_7.4+75 をインストールし、https://wiki.archlinux.jp/index.php/Hiawatha
https://takaq1.plala.jp/contents/puppy/php/index.html などを参考に、hiawatha.conf を設定しましたが
ターミナルで "hiawatha -k" の実行は "Configuration OK."が返りますが、
"php-cgi --version" は "bash: php-cgi: コマンドが見つかりません" が返ってきます。
また、phpスクリプトを含む index.php をブラウザで表示しようとすると ファイルがダウンロードされてしまいます。
Windowsで Xamppを利用したときは比較的情報が多く、http/https で PHPも簡単に実行出来ていたのですが、
かなり "hiawatha php" などのワードで検索して試しましたが、実行に至っていません。
fcgiのインストールが必要なのか? とか思っていますが、PPMで検索しても該当するパッケージが分かりませんでした。
実行出来ている方がおられましたらアドバイスを頂けると助かります。
hiawatha.conf の内容は以下 (内容はほとんど理解できていませんが上記サイトを参考にしています)

コード: 全て選択

ServerId = webuser
ConnectionsTotal = 150
ConnectionsPerIP = 10
SystemLogfile = /var/log/hiawatha/system.log
GarbageLogfile = /var/log/hiawatha/garbage.log

Binding {
	Port = 80
	Interface = 127.0.0.1
}

Binding {
BindingId = CGI
Port = 8080
Interface = 192.168.1.16
MaxRequestSize = 128
TimeForRequest = 3,20
}

Hostname = localhost
WebsiteRoot = /root/Web-Server
StartFile = index.html
AccessLogfile = /var/log/hiawatha/access.log
ErrorLogfile = /var/log/hiawatha/error.log

MimetypeConfig = /etc/mime.types
CGIhandler = /usr/bin/perl:pl
CGIextension = pl,bin,cgi
ExecuteCGI = yes
SecureURL = no

FastCGIserver {
    FastCGIid = PHP7
    ConnectTo = /run/php-fpm/php-fpm.sock
    Extension = php
    SessionTimeout = 30
}

Virtualhost{
RequiredBinding = CGI
Hostname= 192.168.1.16
WebsiteRoot= /var/www/hiawatha
StartFile = index.php
showIndex = no
AccessLogfile = /var/log/hiawatha/access.log
ErrorLogfile = /var/log/hiawatha/error.log
UseFastCGI = PHP7
UseXSLT = yes

ExecuteCGI = yes
TimeForCGI = 10
}
設定ファイルは その他、httpd.conf などの php関連項目を有効化しています。
どうかよろしくお願いいたします。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Fossapup64/9.5 on ASUS P8Z68-M Pro &
Sony-Vaio SVT13128CJS/ i5-3317U 1.7GHz / 8GB
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
thinkpadnerd
記事: 2050
登録日時: 15/10/25(日) 14:00

Re: PHPが実行できない

投稿記事 by thinkpadnerd »

php-cgi の実行ファイルは /usr/bin/php-cgi7.4 なので
# /usr/bin/php-cgi7.4 --version
とすれば、返事が返ってきます。

# ln -s /usr/bin/php-cgi7.4 /usr/bin/php-cgi
としてリンクを作成すれば、

# /usr/bin/php-cgi --version
でも返事が返ってきます。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
yuknak
記事: 38
登録日時: 21/05/15(土) 12:11

Re: PHPが実行できない

投稿記事 by yuknak »

thinkpadnerd さんが書きました: 24/01/09(火) 14:29 php-cgi の実行ファイルは /usr/bin/php-cgi7.4 なので
# /usr/bin/php-cgi7.4 --version
とすれば、返事が返ってきます。
thinkpadnerd さん
いつも素早いアドバイスありがとうございます。
なるほど!
いつまで経っても Windowsから抜けきれません(涙;;;)。
あちらは大抵インストーラーが 環境変数などPathの設定もやってくれるので・・・・。
ご教授の情報を参考に /usr/bin/php-cgi7.4   のシンボリックリンクを /root 直下に置いたら
"PHP 7.4.3-4ubuntu2.19 (cgi-fcgi) (built: Jun 27 2023 15:49:59)"
が返ってきました。(php自体は実行されている?)
ただ、残念ながら相変わらず ブラウザで localhostの *.php などのスクリプトをロードしても
当該のファイルがダウンロードされてしまい PHPが走っている気配はありません。
hiawatha上で phpスクリプトが実行されるようにするにはどこをチェックすれば良いのでしょうか?
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Fossapup64/9.5 on ASUS P8Z68-M Pro &
Sony-Vaio SVT13128CJS/ i5-3317U 1.7GHz / 8GB
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
thinkpadnerd
記事: 2050
登録日時: 15/10/25(日) 14:00

Re: PHPが実行できない

投稿記事 by thinkpadnerd »

# ln -s /usr/bin/php-cgi7.4 /usr/bin/php-cgi

は実行されましたか?

これをすることによって、/usr/bin/php-cgi というファイル(リンク)ができます。
パスを指定せずに
# php-cgi --version
で返事が返ってくるようになります。

主要なコマンドはだいたい /usr/bin 以下にあります。このようにしても動きませんか?

追記
> あちらは大抵インストーラーが 環境変数などPathの設定もやってくれるので・・・・。

deb パッケージにはインストールスクリプトが含まれていることがあり、ubuntu などでは自動的に実行されると思います。
deb ファイルは Puppy ネイティブのパッケージ形式ではないため、残念ながらインストールスクリプトの実行は期待できません。
なお、pet 形式のパッケージに付属するインストールスクリプトは確実に実行されます。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
yuknak
記事: 38
登録日時: 21/05/15(土) 12:11

Re: PHPが実行できない

投稿記事 by yuknak »

thinkpadnerd さんが書きました: 24/01/10(水) 16:07 # ln -s /usr/bin/php-cgi7.4 /usr/bin/php-cgi
何度も恐れ入ります。
仰るコマンドは実行してリンクは出来ています。
基本的なことが分かっていませんが、php-cgi7.4 という実行ファイルは hiawatha の起動時に実行されるのでしょうか?
それとも単独で実行する必要があるのでしょうか?
(一応、ターミナルで php-cgi は実行しましたが、何も応答はありません。アイコンもクリックして見ましたが変化はありません)
hiawatha.conf には php-cgi への記述はなく phpを指示しているらしい箇所は

コード: 全て選択

FastCGIserver {
    FastCGIid = PHP7
    ConnectTo = /run/php-fpm/php-fpm.sock
    Extension = php
    SessionTimeout = 30
}
Virtualhost{
・・・・
UseFastCGI = PHP7
・・・・
}
などとあるだけで php-cgi が起動するようには思えません。
最初にも記しましたとおり、私が PPMでインストールしたパッケージは
php_7.4+75 / php-cgi_7.4+75 / php-fpm_7.4+75
の3つだけだったと思いますが、何かが欠けているような気もしています。
(PPMのアンインストール画面では phpがつく項目は php-common_75 / php-cli_7.4.3 / php7.4-common_7.4.3 /
php7.4-json_7.4.3 / php7.4-opcache_7.4.3 / php7.4-readline_7.4.3 / php7.4_7.4.3 / php_7.4+75 / php7.4-cgi_7.4.3
php-cgi_7.4+75 / php7.4-fpm_7.4.3 / php-fpm_7.4+75  の12個がありますが)
https://wiki.archlinux.jp/index.php/Hiawatha の php関連の項には
「php, php-cgi, php-fpm をインストールしてください (PHP や LAMP を参照)。そして php-fpm.service を起動・有効化します。」
とありますが、findで "php-fpm.service" を探しても見つかりません。
何度もお手数をおかけして恐縮ですが、よろしくお願いいたします。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Fossapup64/9.5 on ASUS P8Z68-M Pro &
Sony-Vaio SVT13128CJS/ i5-3317U 1.7GHz / 8GB
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
thinkpadnerd
記事: 2050
登録日時: 15/10/25(日) 14:00

Re: PHPが実行できない

投稿記事 by thinkpadnerd »

archwiki には
php, php-cgi, php-fpm をインストールしてください (PHP や LAMP を参照)。そして php-fpm.service を起動・有効化します。
php-fpm.service を起動・有効化します、とさらっと書いてありますね。
システム -> BootManager -> PC起動時に開始するサービス
を見てみると、php7.4-fpm は有効になっています。

しかし、
# systemctl status php7.4-fpm.service
を実行すると、
Loaded: loaded ですが、
Active: failed
と出ます。

(status を見るために systemctl をパッケージマネージャから入れました。)

私は .conf ファイルを全くいじっていないのでダメなのかもしれません。

ちなみに
# systemctl restart php7.4-fpm.service
とすれば、サービスを再起動することもできます。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
yuknak
記事: 38
登録日時: 21/05/15(土) 12:11

Re: PHPが実行できない

投稿記事 by yuknak »

早々にご回答 恐れ入ります。
systemctl を入れて実行したところ

コード: 全て選択

root# systemctl status php7.4-fpm.service
    php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
    Loaded: loaded (/lib/systemd/system/php7.4-fpm.service, disabled)
    Active: inactive (dead)
root# systemctl restart php7.4-fpm.service
root# systemctl status php7.4-fpm.service
    php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
    Loaded: loaded (/lib/systemd/system/php7.4-fpm.service, disabled)
    Active: failed (failed)
のようになってしまいました。
"php7.4-fpm.service, disabled" となっているので、php7.4-fpm.log を見ると再起動のタイミングで
ERROR: [pool www] cannot get uid for user 'www-data'
ERROR: FPM initialization failed
が記録されています。 "user 'www-data'" とは?
ざっと hiawatha.conf / php-fcgi.conf / httpd.conf
など .conf ファイルを見てみましたが、 #でコメントアウトした行以外に www-data はありませんでした。
これが原因かもしれませんが "user 'www-data'" がどこで指定されているのか分かりません。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Fossapup64/9.5 on ASUS P8Z68-M Pro &
Sony-Vaio SVT13128CJS/ i5-3317U 1.7GHz / 8GB
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
thinkpadnerd
記事: 2050
登録日時: 15/10/25(日) 14:00

Re: PHPが実行できない

投稿記事 by thinkpadnerd »

/run/php というディレクトリを作成
ここに、php7.4-fpm.sock という空のファイルを作成
つまり、
/run/php/php7.4-fpm.sock
となります。

# systemctl restart php7.4-fpm.service
を実行して
Loaded: loaded
Active: active (running)

という返事が返ってきました。
さらに、OS を再起動すると
/run/php/php-fpm.sock
というリンクができていました。

hiawatha.conf の
ConnectTo = /run/php-fpm/php-fpm.sock

ConnectTo = /run/php/php-fpm.sock
に書き換えれば一致します。

他にも
# adduser www-data
とかやりましたが、これは必要かどうか分かりません。

いちいち手動でファイルを作成とか、どう考えてもおかしいので、たぶん ubuntu なら自動的に設定されるのでしょう。

Bookworm Pup64 なら apt が使えるので面倒がないかもしれません。
ただ、apt が使える Puppy を利用するくらいなら、本家 debian を利用したほうがよさそうな気がします。サイズをなるべく小さく抑えたいなら Puppy ですが。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
thinkpadnerd
記事: 2050
登録日時: 15/10/25(日) 14:00

Re: PHPが実行できない

投稿記事 by thinkpadnerd »

thinkpadnerd さんが書きました: 24/01/10(水) 22:21 システム -> BootManager -> PC起動時に開始するサービス
を見てみると、php7.4-fpm は有効になっています。
× どうも BootManager の設定は効いていないようです。
○ BootManager で php7.4-fpm のチェックを外す。

/root/Startup に php-fpm.sh を作って入れました。(ファイル名は任意)

コード: 全て選択

#!/bin/sh
systemctl restart php7.4-fpm.service
サービスがすでに起動していたら再起動されますし、そもそも起動していなければ起動されます。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
thinkpadnerd
記事: 2050
登録日時: 15/10/25(日) 14:00

Re: PHPが実行できない

投稿記事 by thinkpadnerd »

もう一度 php 関連インストール前の状態からやってみました。

まず、必要なパッケージをインストール

# ln -s /usr/bin/php-cgi7.4 /usr/bin/php-cgi (リンクを作成)

/run/php/php7.4-fpm.sock (空のファイル) を作成する。

BootManager で php7.4-fpm のチェックを外す。(OSを再起動する)

# adduser www-data
↑これ必要なようです
# systemctl restart php7.4-fpm.service
# systemctl status php7.4-fpm.service
で確認

OS起動時に実行されるよう
/root/Startup/php-fpm.sh を作成

コード: 全て選択

#!/bin/sh
systemctl restart php7.4-fpm.service
hiawatha.conf の
ConnectTo = /run/php-fpm/php-fpm.sock

ConnectTo = /run/php/php-fpm.sock
に書き換える。

実際に cgi が動くかは確認していません。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
yuknak
記事: 38
登録日時: 21/05/15(土) 12:11

Re: PHPが実行できない

投稿記事 by yuknak »

thinkpadnerd さんが書きました: 24/01/11(木) 14:31 もう一度 php 関連インストール前の状態からやってみました。
・・・・・(中略)・・・・
そこまでやっていただいて 恐縮です。
実は、私も 今まで hddにインストールした Fossapup64 で確認していましたが、
紆余曲折しているうちに、現状がどうなっているか不安になったので
別に USBメモリ上に Frugalインストールした Fossapup64(Google Cromeだけをインストール済み)
に PPMで php_7.4+75 / php-cgi_7.4+75 / php-fpm_7.4+75 / systemctl をインストールして
# adduser www-data
# systemctl restart php7.4-fpm.service
# systemctl status php7.4-fpm.service
を実行してみました。
結果、仰るとおり
php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
Loaded: loaded
Active: active (running)
が返ってきました。(当然?)
どこかで間違った設定をしてしまい、その痕跡が残ったままだったようです。
(USBメモリで簡単に試せる Puppyの真骨頂ですね)

コード: 全て選択

実際に cgi が動くかは確認していません。
そこで、localhost の index.html (htmlコード中に php スクリプトを記述)を呼んでみました。
しかし、状況は同じで html は表示されるものの コード中の 例えば
<?php
echo 'testです';
?>
はそのまま echoコマンドとして文字列出力しないですべて文字列として出力されてしまいました。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Fossapup64/9.5 on ASUS P8Z68-M Pro &
Sony-Vaio SVT13128CJS/ i5-3317U 1.7GHz / 8GB
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
thinkpadnerd
記事: 2050
登録日時: 15/10/25(日) 14:00

Re: PHPが実行できない

投稿記事 by thinkpadnerd »

cgi 動きました。
ubuntu には fcgi というパッケージがないので、
libfcgi-bin (と依存ファイル) をインストールしました。

あと、hiawatha.conf

コード: 全て選択

MimetypeConfig = /etc/mime.types
CGIhandler = /usr/bin/php-cgi:php <- ここ
CGIextension = pl,bin,cgi
ExecuteCGI = yes
SecureURL = no

FastCGIserver {
    FastCGIid = PHP7
    ConnectTo = 127.0.0.1:9000 <- ここ
    Extension = php
    SessionTimeout = 30
}
「ここ」と書いた箇所を修正しました。他にも何かしたような気もするので、検証が必要かと考えています。

テストしたファイル
index.php (追記: index.html が存在するので、example.php としたほうがいいかもしれません。)

コード: 全て選択

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
    </head>
    <body>

        <?php
            echo "Hi, I'm a PHP script!";
        ?>

     </body>
</html>
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
yuknak
記事: 38
登録日時: 21/05/15(土) 12:11

Re: PHPが実行できない

投稿記事 by yuknak »

長いことお付き合いいただきありがとうございます。
お陰様で phpファイルが表示されるようになりました。
ただ 下記の問題があります。
1. 当初 phpファイル中の phpスクリプトは実効されましたが、html中では実行されませんでした。
  これは
  CGIhandler = /usr/bin/php-cgi:php,html
  と htmlを追記することで実行できるようになりました。
2. ただし、echo文の出力はできていますが、その後に以下のような警告が表示されます。

コード: 全て選択

/php/20190902/memcache.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'msgpack.so' (tried: /usr/lib/php/20190902/msgpack.so (/usr/lib/php/20190902/msgpack.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/msgpack.so.so (/usr/lib/php/20190902/msgpack.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql.so' (tried: /usr/lib/php/20190902/pdo_mysql.so (/usr/lib/php/20190902/pdo_mysql.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_mysql.so.so (/usr/lib/php/20190902/pdo_mysql.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'soap.so' (tried: /usr/lib/php/20190902/soap.so (/usr/lib/php/20190902/soap.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/soap.so.so (/usr/lib/php/20190902/soap.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
何やら、「ライブラリが足りない」と言っているようですが、PPMで ”libmemcached”や ”msgpack”などを検索すると
10個弱のパッケージが出てきますがどのライブラリをインストールすればいいのか分かりません。
また(あまり自信はありませんが) ”mysql”とか、必ずしも phpの echo には必要ないと思われるライブラリもあるようです。
このあたり 情報があればお教えいただけますか?
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Fossapup64/9.5 on ASUS P8Z68-M Pro &
Sony-Vaio SVT13128CJS/ i5-3317U 1.7GHz / 8GB
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
yuknak
記事: 38
登録日時: 21/05/15(土) 12:11

Re: PHPが実行できない

投稿記事 by yuknak »

失礼しました。
Google 先生はなかなか文章の質問には答えてくれないので、
MS bing のチャットで
how to resume "warning /php/20190902/memcache.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0" on Fiawatha ?
と聞いた所、php.ini の設定が原因ということでした。
記憶では https://forum.puppylinux.com/viewtopic.php?t=7908 を参照して右往左往したとき
php.ini をコピーしたような?
その時は no save でシャットダウンしたつもりが、残っていたので削除したところ発生しなくなりました。
php.ini ってコンパイル時に参照されるのでしょうか?
bing は php.ini を置いたままで修正する方法を提示していますが、
Warning が出ても echo や include は実行されているので、当面削除のままで使います。
お騒がせしました。
本当にいろいろ 教えていただきありがとうございました。
(またお世話になりそうですが、その時はよろしくお願いいたします)
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Fossapup64/9.5 on ASUS P8Z68-M Pro &
Sony-Vaio SVT13128CJS/ i5-3317U 1.7GHz / 8GB
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
thinkpadnerd
記事: 2050
登録日時: 15/10/25(日) 14:00

Re: PHPが実行できない

投稿記事 by thinkpadnerd »

yuknak さんが書きました: 24/01/12(金) 23:45 1. 当初 phpファイル中の phpスクリプトは実効されましたが、html中では実行されませんでした。
  これは
  CGIhandler = /usr/bin/php-cgi:php,html
  と htmlを追記することで実行できるようになりました。
なるほど、そういうことでしたか。
本家フォーラムの記事によると、
CGIhandler =
は複数行指定できるようですね。
ただ、次の行に
CGIextension =
があるのですが、
CGIhandler =
の行で拡張子を指定できるのなら、
CGIextension =
は必要なのだろうか、というのがしろうとの立場からの疑問です。いずれにしても、ちゃんと動くのなら結果オーライですが。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
返信する