Docker php:apache HTML/PHP 代码运行不正确。 stack main() 抛出在多个区域
Docker php:apache HTML/PHP code runs incorrectly. stack main() thrown in multiple areas
感谢您花时间阅读这个问题。我用 PHP、HTML、CSS 编写了代码,
Javascript 和 MySQL 在开发计算机上。此代码运行良好。没有显示错误。
我想将我的代码移动到 docker 群中。我制作了一个 docker 组合文件(图 1)并启动
我的 docker swarm 规格显示(图 2)。群堆栈运行完美但是当我去添加
我的代码连接到 /var/www/html 它显示不正确,错误时出错
(图 3).
我试图提供任何有价值的信息来破解这个问题。如果有什么我
丢失或信息太多?!?让我知道。
提前致谢。
Docker(图 1 && 图 2)
version: "3.8"
services:
loadbalancer:
image: nginx
ports:
- "80:80"
networks:
- frontend
- backend
deploy:
mode: global
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
web:
image: php:8.0-rc-apache-buster
ports:
- "8080:80"
networks:
- backend
deploy:
mode: global
volumes:
- ./code:/var/www/html/
- ./apache2.conf:/var/apache2/apache2.conf
mariadb:
image: linuxserver/mariadb:arm32v7-latest
ports:
- "8081:80"
networks:
- backend
volumes:
- ./data:/config/databases
deploy:
placement:
constraints:
- node.hostname==dot5
phpmyadmin:
image: phpmyadmin
ports:
- 8000:80
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mariadb
depends_on:
- mariadb
deploy:
mode: global
networks:
- backend
- frontend
networks:
frontend:
backend:
Client:
Debug Mode: false
Server:
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 11
Server Version: 19.03.13
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: active
NodeID: 101slznkwl25s4pejtngbrq0z
Is Manager: true
ClusterID: jphdf0tzm4p37i7xail1mcoiq
Managers: 4
Nodes: 8
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 192.168.0.109
Manager Addresses:
192.168.0.102:2377
192.168.0.103:2377
192.168.0.109:2377
192.168.0.86:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 5.4.51-v7+
Operating System: Raspbian GNU/Linux 10 (buster)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 975.4MiB
Name: dot3
ID: UZO6:MLFS:W2AW:EFAI:2KXY:XQNE:3K2S:CEND:JQCY:EVVH:HEEW:ICOM
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No kernel memory TCP limit support
WARNING: No oom kill disable support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
PHP代码(图3)
<div class='row justify-content-center mart' id="items">
<!-- connect -->
<?php
include_once 'con.php';
global $conn;
$filter = "";
if (isset($_GET['all'])) {
$filter = "";
}
else if (isset($_GET['household'])) {
$filter = "WHERE type = 'household'";
}
else if (isset($_GET['weed'])) {
$filter = "WHERE type = 'weed'";
}
else if (isset($_GET['garden'])) {
$filter = "WHERE type = 'garden'";
}
else if (isset($_GET['dessert'])) {
$filter = "WHERE type = 'dessert'";
}
else if (isset($_GET['tech'])) {
$filter = "WHERE type = 'tech'";
}
else if (isset($_GET['bants'])) {
$filter = "WHERE type = 'bants'";
}
$sql = "SELECT * FROM items $filter";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_array($result)) {
?>
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12 col-12 mb-4">
<a href="<?php printf('%s?item_id=%s', 'view.php', $row['item_id'])?>">
<div class='menu_item sharp-rounded slight-hover'>
<div class="card-img-top-left">
<i <?php echo 'class="fas fa-'.$row['fa'].' fa-2x text-orange"'; ?>></i>
</div>
<img class='menu-img sharp-rounded marb' style="max-height: 600px; max-width: 100%; width: auto;" id="loading-item" src='<?php echo str_replace("../", "assets/", $row["image"]);?>' alt='<?php echo $row['name']; ?>'>
<div class="row justify-content-center">
<div class="col-md-6 mart">
<h4 style="color: #e84545;">$<?php echo $row['price']; ?></h4>
</div>
<div class="col-md-6 mart text-orange">
<a href="view.php?item_id=<?php echo $row['item_id']; ?>#add_to_cart">Add To Cart</a>
</div>
<div class="inline-block" style="width: 100%;">
<h4><?php echo $row['name'];?></h4>
<p style="color:#686E79; overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;">
<?php echo $row['info']; ?>
</p>
</div>
</div>
</div>
</a>
</div>
<?php
}} else { ?>
<div class="bob"><img class="sharp-rounded" src="assets/images/gen/nothing_here.png" alt="nothing here!" width="70%"></div>
<?php
} mysqli_close($conn);
?>
</div>
网站的预期外观。 1: docker-stack 2: rpi 开发服务器
docker-stack look/feel
rpi dev server look/feel
您用于 Web 容器的 Docker 图像至少没有启用 mysqli 插件(因此是未定义的函数)。您可以在官方 PHP 基本映像中使用 docker-php-ext-install
和 docker-php-ext-enable
在 Docker 文件中启用它。
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
https://github.com/docker-library/docs/tree/master/php#php-core-extensions
https://github.com/docker-library/php/issues/391
一旦解决,可能还有其他问题,但这是眼前的问题。
问题已解决。
原来制作我的应用程序需要mysqli 运行(默认没有安装!)。
谢谢大家
感谢您花时间阅读这个问题。我用 PHP、HTML、CSS 编写了代码, Javascript 和 MySQL 在开发计算机上。此代码运行良好。没有显示错误。
我想将我的代码移动到 docker 群中。我制作了一个 docker 组合文件(图 1)并启动 我的 docker swarm 规格显示(图 2)。群堆栈运行完美但是当我去添加 我的代码连接到 /var/www/html 它显示不正确,错误时出错 (图 3).
我试图提供任何有价值的信息来破解这个问题。如果有什么我 丢失或信息太多?!?让我知道。
提前致谢。
Docker(图 1 && 图 2)
version: "3.8"
services:
loadbalancer:
image: nginx
ports:
- "80:80"
networks:
- frontend
- backend
deploy:
mode: global
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
web:
image: php:8.0-rc-apache-buster
ports:
- "8080:80"
networks:
- backend
deploy:
mode: global
volumes:
- ./code:/var/www/html/
- ./apache2.conf:/var/apache2/apache2.conf
mariadb:
image: linuxserver/mariadb:arm32v7-latest
ports:
- "8081:80"
networks:
- backend
volumes:
- ./data:/config/databases
deploy:
placement:
constraints:
- node.hostname==dot5
phpmyadmin:
image: phpmyadmin
ports:
- 8000:80
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mariadb
depends_on:
- mariadb
deploy:
mode: global
networks:
- backend
- frontend
networks:
frontend:
backend:
Client:
Debug Mode: false
Server:
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 11
Server Version: 19.03.13
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: active
NodeID: 101slznkwl25s4pejtngbrq0z
Is Manager: true
ClusterID: jphdf0tzm4p37i7xail1mcoiq
Managers: 4
Nodes: 8
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 192.168.0.109
Manager Addresses:
192.168.0.102:2377
192.168.0.103:2377
192.168.0.109:2377
192.168.0.86:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 5.4.51-v7+
Operating System: Raspbian GNU/Linux 10 (buster)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 975.4MiB
Name: dot3
ID: UZO6:MLFS:W2AW:EFAI:2KXY:XQNE:3K2S:CEND:JQCY:EVVH:HEEW:ICOM
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No kernel memory TCP limit support
WARNING: No oom kill disable support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
PHP代码(图3)
<div class='row justify-content-center mart' id="items">
<!-- connect -->
<?php
include_once 'con.php';
global $conn;
$filter = "";
if (isset($_GET['all'])) {
$filter = "";
}
else if (isset($_GET['household'])) {
$filter = "WHERE type = 'household'";
}
else if (isset($_GET['weed'])) {
$filter = "WHERE type = 'weed'";
}
else if (isset($_GET['garden'])) {
$filter = "WHERE type = 'garden'";
}
else if (isset($_GET['dessert'])) {
$filter = "WHERE type = 'dessert'";
}
else if (isset($_GET['tech'])) {
$filter = "WHERE type = 'tech'";
}
else if (isset($_GET['bants'])) {
$filter = "WHERE type = 'bants'";
}
$sql = "SELECT * FROM items $filter";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_array($result)) {
?>
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12 col-12 mb-4">
<a href="<?php printf('%s?item_id=%s', 'view.php', $row['item_id'])?>">
<div class='menu_item sharp-rounded slight-hover'>
<div class="card-img-top-left">
<i <?php echo 'class="fas fa-'.$row['fa'].' fa-2x text-orange"'; ?>></i>
</div>
<img class='menu-img sharp-rounded marb' style="max-height: 600px; max-width: 100%; width: auto;" id="loading-item" src='<?php echo str_replace("../", "assets/", $row["image"]);?>' alt='<?php echo $row['name']; ?>'>
<div class="row justify-content-center">
<div class="col-md-6 mart">
<h4 style="color: #e84545;">$<?php echo $row['price']; ?></h4>
</div>
<div class="col-md-6 mart text-orange">
<a href="view.php?item_id=<?php echo $row['item_id']; ?>#add_to_cart">Add To Cart</a>
</div>
<div class="inline-block" style="width: 100%;">
<h4><?php echo $row['name'];?></h4>
<p style="color:#686E79; overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;">
<?php echo $row['info']; ?>
</p>
</div>
</div>
</div>
</a>
</div>
<?php
}} else { ?>
<div class="bob"><img class="sharp-rounded" src="assets/images/gen/nothing_here.png" alt="nothing here!" width="70%"></div>
<?php
} mysqli_close($conn);
?>
</div>
网站的预期外观。 1: docker-stack 2: rpi 开发服务器
docker-stack look/feel
rpi dev server look/feel
您用于 Web 容器的 Docker 图像至少没有启用 mysqli 插件(因此是未定义的函数)。您可以在官方 PHP 基本映像中使用 docker-php-ext-install
和 docker-php-ext-enable
在 Docker 文件中启用它。
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
https://github.com/docker-library/docs/tree/master/php#php-core-extensions
https://github.com/docker-library/php/issues/391
一旦解决,可能还有其他问题,但这是眼前的问题。
问题已解决。
原来制作我的应用程序需要mysqli 运行(默认没有安装!)。
谢谢大家