问题标签 [php-7.3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
47 浏览

php - 一个项目的多个安全配置

如何加载有关 Env 变量的特定安全配置。

我的目标是将 LDAP 用于内部项目,将数据库提供程序用于外部项目

0 投票
1 回答
188 浏览

php - 可以在PHP中导入魔术常量吗

我找不到任何关于我无法导入任何魔法常数这一事实的提示。

试图喜欢...

... 导致

这个问题很重要,而 PHPStorm 倾向于自动导入魔术常量。如果不可能,则需要报告和修复。


编辑 (2019-07-25)

我打开一个问题后,这将在 PHPStorm 2019.3 中得到修复。

0 投票
1 回答
654 浏览

symfony - 自定义 UserProvider 配置 symfony 4

我想创建自己的 LdapUserProvider 以应用有关用户名的不同角色。准确地说,我的 LDAP 与 symfony 的默认 LdapUserProvider 配合得非常好。

正如LDAP 文档所说:

ldap 用户提供程序,使用 LdapUserProvider 类。与所有其他用户提供程序一样,它可以与任何身份验证提供程序一起使用。

请问如何使用自定义的用户提供程序?

编辑: 谢谢你的回答@Vyctorya

我想这就是我需要的!

在 security.yaml 这就是我调用服务的方式:

这是我的 service.yaml:

我不明白为什么未定义 baseDn ......

无法自动装配服务“App\Services\MyLdapUserProvider”:方法“Symfony\Component\Security\Core\User\LdapUserProvider::__construct()”的参数“$baseDn”是类型提示的“字符串”,您应该明确配置其值.

0 投票
1 回答
558 浏览

apache2.4 - Symfony 4.3 总是返回无效的 CSRF 令牌

系统信息:

  • Ubuntu 18.04.1
  • 阿帕奇 2.4.29
  • PHP 7.2.19

服务器总是报告登录表单上的 csrf 令牌无效。我已经按照 symfony 指南进行了一些 Symfony 指南https://symfony.com/doc/current/security/csrf.html#csrf-protection-in-login-formshttps://symfony.com/doc/current/安全/form_login_setup.html

我已经到处搜索了,似乎找不到可以看的东西。我已经检查了各种文件权限,我唯一能想到的就是在我知道它可以工作的地方使用 php 7.1 版。

在这里您可以看到在 /login 上生成的令牌和
在此处输入图像描述

和身份验证器中的相同数据 在此处输入图像描述

0 投票
1 回答
461 浏览

php - 将 PHP 版本 5.2 升级到 7.3 后,mysqli_fetch_assoc 无法在 while 循环中工作

我不确定为什么会发生这种情况,因为某些函数正在mysqli_fetch_assoc与 while 循环一起使用,而另一些函数mysqli_fetch_assoc在函数中的 while 循环中不起作用。

我使用了以下 PHP 脚本

关闭值后不工作不打印while loop$result关闭循环后也不显示任何内容。

数据库中有501记录但数据不打印使用mysqli_fetch_assoc我也尝试mysqli_fetch_object使用foreach循环但数据不打印。

我不知道为什么会这样。

0 投票
2 回答
5125 浏览

php - “调用未定义的函数 array_key_last()”虽然它是一个在本地工作的 PHP 函数

我制作了一个在本地完美运行的网站。现在我正在尝试使用 ploi.io 在线发布它。我收到此错误:

“调用未定义的函数 array_key_last()”代码中的第 3 行

array_key_last()它是一个 PHP 函数。

https://www.php.net/manual/en/function.array-key-last.php

这是我的网站链接:http ://rocallisa.xyz/

我的服务器正在运行PHP 7.3,但这无济于事。

0 投票
0 回答
938 浏览

docker - 使用 PDO 和 Postgres 的 PHP 7.3 的连接问题(Docker 映像)

我正在将我的开发环境从旧的 XAMPP 安装更改为新的 dockerized 解决方案(操作系统:Ubuntu Mate LTS 18.03)。似乎一切运行良好,但我仍然没有从 Apache2 docker 镜像到我的 Postgres DBMS docker 镜像的连接。:-/

我使用Postgres 10.3 服务器的官方postgres docker 映像。数据库已启动,我可以通过我的 NetBeans 11 IDE、PgAdmin 工具和本地运行的 JavaEE Tomcat 服务器进行连接。服务器还接受本地主机之外的连接。启动 postgres 映像的命令是:

作为 Apache /PHP 映像,我还使用来自 DockerHub 的官方php7.3-apache。我实例化的图像:

PHP 脚本也得到了很好的执行。

然后我用 php_info() 发现 Apache 图像不包含 postgres pdo 扩展。我通过在 google 上找到的解决方案在 docker 映像中添加了扩展:

在此过程之后,postgres PDO 扩展出现在 php_info() 中并通过命令 \PDO::getAvailableDrivers() 出现。但是当我尝试连接时,我仍然收到服务器超时: [ERROR] DBMS Connection SQLSTATE[08006] [7] timeout expired

由于驱动程序输出得到以下信息:可用驱动程序:array(2) { [0]=> string(6) "sqlite" 2 => string(5) "pgsql" }

我的 php 片段似乎也很好:

数据库表可用并且 SELECT 语句在 NetBeans IDE 中运行良好。

看起来 php7.3-apache 映像存在问题。我想我激活扩展的方式不正确。如果有人可以帮助我获得 DBMS 连接会很棒。非常感谢先进。

编辑:完整的 POD 连接字符串是: pgsql:host=172.17.0.1;port=5432;dbname=tinycms;user=tinycms;password=tinycms 数据库用户等是正确的,因为我在我的 Netbeans IDE 中使用它来连接到 postgres。

postgres docker容器的CMD(包括PHP脚本的执行:

0 投票
1 回答
321 浏览

symfony-3.4 - 未捕获的 LogicException:缓存必须返回 ClassMetadata 的实例,但得到 1

尝试使用 php 7.3 启动 Symfony 应用程序 3.4 会引发异常:

致命错误:未捕获的 LogicException:缓存必须返回 ClassMetadata 的实例,但在 /var/www/contoso/vendor/jms/metadata/src/Metadata/MetadataFactory.php:73 中获得了 1. 堆栈跟踪:

.0 /var/www/contoso/vendor/jms/security-extra-bundle/Security/Authorization/Interception/SecurityPointcut.php(84): Metadata\MetadataFactory->getMetadataForClass('AppBundle\Contr...')

.1 /var/www/contoso/vendor/jms/aop-bundle/DependencyInjection/Compiler/PointcutMatchingPass.php(149): JMS\SecurityExtraBundle\Security\Authorization\Interception\SecurityPointcut->matchesMethod(Object(ReflectionMethod))

.2 /var/www/contoso/vendor/jms/aop-bundle/DependencyInjection/Compiler/PointcutMatchingPass.php(65): JMS\AopBundle\DependencyInjection\Compiler\PointcutMatchingPass->processDefinition(Object(Symfony\Component\DependencyInjection\Definition ), 数组, 数组)

.3 /var/www/contoso/vendor/symfony/symfony/src/Sy 在第 73 行的 /var/www/contoso/vendor/jms/metadata/src/Metadata/MetadataFactory.php

我使用 chmod 777 将文件权限更改为 app/cache 和 app/logs 文件夹,但无法正常工作。

0 投票
1 回答
858 浏览

php - PHP 7.3 SoapClient stream_context (verify_peer) 被忽略

我正在从 PHP 5.6 升级到 PHP 7.3,似乎 PHP 7.3 中的 SoapClient 忽略了 sslverify_peer选项。

在 PHP 5.6 中,以下代码按原样执行:

在 PHP 7.3 中执行相同的代码会导致PHP Fatal Error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://...?wsdl' : failed to load external entity "https://...?wsdl"

我试过包括verify_peer_name => false在内$optsallow_self_signed => true(尽管证书不是自签名的——只是没有由运行代码的机器上的任何受信任的证书签名)。我还尝试包含cafile签署远程证书的根 CA(以 .pem 格式)以及整个证书链(以 .pem 格式)。此外,我尝试包含该capath选项,指向我保存了根 CA 以及证书链的目录。

如果我尝试通过提供uriand绕过下载 wsdl location,我会收到错误PHP Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host in...

到目前为止,我还没有发现 5.6 和 7.3 之间的差异可以解释我所看到的行为差异。

0 投票
1 回答
106 浏览

php - 如何为每个产品建模多个变量

我想知道为产品数据(变量数据)设计数据库的方法

例子

我有这些表:

产品:id - Title
属性:id - name
选项:id - name - attribute_id

每个产品都有一个或多个属性,每个属性都有一个或多个选项。

这是我想到的设置:

product_attribute_option

ID - 价格 - sale_price - 数量 - product_id - attribute_id - option_id

我的问题是如何通过迁移和数据库来管理这种情况?