问题标签 [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 回答
8248 浏览

php-7.3 - 致命错误:未捕获的错误:调用未定义的函数 ereg()

我在 Centos 7.6 上使用 php v7.3.2。
在升级 php 之前,版本是 5.4。
在 v 5.4 中我没有错误。
但是在 v 7.3.2 中我收到了这个错误:

致命错误:未捕获错误:调用 /usr/local/IBSng/interface/xmlrpc/xmlrpc.inc:1307 中未定义的函数 ereg() 堆栈跟踪:#0 /usr/local/IBSng/interface/xmlrpc/xmlrpc.inc( 1284): xmlrpcmsg->parseResponse('HTTP/1.0 200 OK...') #1 /usr/local/IBSng/interface/xmlrpc/xmlrpc.inc(931): xmlrpcmsg->parseResponseFile(Resource id #21) # 2 /usr/local/IBSng/interface/xmlrpc/xmlrpc.inc(872): xmlrpc_client->sendPayloadHTTP10(Object(xmlrpcmsg), '127.0.0.1', '1235', 240, '', '') #3 / usr/local/IBSng/interface/IBSng/inc/xmlrpc.php(43): xmlrpc_client->send(Object(xmlrpcmsg), 240) #4 /usr/local/IBSng/interface/IBSng/inc/xmlrpc.php( 27): IBSxmlrpc->__sendXmlRpcRequest(Object(xmlrpcmsg), 240) #5 /usr/local/IBSng/interface/IBSng/inc/request.php(60): IBSxmlrpc->sendRequest('login.login', Array) #6 /usr/local/IBSng/interface/IBSng/inc/auth.php(144): Request->send() #7 /usr/local/IBSng/interface/IBSng/inc/auth. php(111): Auth->__sendAuthRequest() #8 /usr/local/IBSng/interface/IBSng/inc/auth.php(94): Auth->__authenticateUser() #9 /usr/local/IBSng/ in / usr/local/IBSng/interface/xmlrpc/xmlrpc.inc 在第 1307 行

该错误是什么意思?我该如何解决?

0 投票
2 回答
284 浏览

php - 为什么 PHP 把这个 DOM 对象当作一个数组来对待?

我正在关注本教程:

https://www.w3schools.com/php/php_xml_dom.asp

循环通过 XML 部分是有问题的。PHP 出于某种原因将 DOM 对象视为一个数组。此外, var_dump 除了长度之外没有返回任何关于对象属性的信息,但程序输出看起来像是突然出现的。foreach 可以以某种方式循环对象吗?如果是这样,这些属性包含在哪里(节点名称和节点值),因为 var_dump 没有显示它们?

Var dump 函数返回:

object(DOMNodeList)#3 (1) { ["length"]=> int(9) } #text

但是执行的代码是这样的:

文字=

到 = 托夫

文字=

从 = 贾尼

文字=

标题 = 提醒

文字=

身体 = 这个周末别忘了我!

文字=

0 投票
2 回答
2865 浏览

php-5.6 - PHP 7.3 上的 Cakephp 2.4

我们有一个在 CakePHP V2.4 上构建和运行的应用程序。这是在 PHP V5.6 上运行的。我们想让它在 PHP V7.3 上运行。
您能否就如何做到这一点以及您对这种变化的经验提出建议。

0 投票
1 回答
680 浏览

apache - Apache 2.4 + Windows XP 上的多个 PHP,带有一个核心 API

为长篇阅读道歉,但我认为在前期包含尽可能多的细节是有意义的,而不是等待人们询问各种配置、日志等。

我有一台运行 XP 并安装了 One Core API 的旧 PC。

我正在使用它来测试具有多个 PHP 版本的 Apache 2.4.38。一切正常,除了 PHP 7.2 和 7.3 为所有 php 文件返回 404 状态并显示“未指定输入文件”消息。Apache 日志,如果我正确阅读它们,表明 php-cgi.exe 被正确调用,并且即使文件存在也负责返回此状态。

SysInternals Process Monitor 显示 Apache 的“httpd.exe”发现 php 文件没有问题。在此之后,直到 7.1 的所有 PHP 版本都检查“user.ini”和请求的 php 文件。然而,版本 7.2 和 7.3 只检查“user.ini”,根本不尝试访问请求的 php 文件。尽管如此,它们还是返回 404 错误,并显示消息“未指定输入文件”。

我现在已经将所有东西缩小到一个简单的工作配置,如果有人想自己尝试一下,下面都会显示。Apache 和所有 PHP 版本都安装在一个根据其 5 位版本 ID 命名的文件夹中。有一个测试站点“test2.local”,其中包含一个索引文件。

  • 一切都是 32 位的,所有 PHP 版本都是非线程安全 (nts) 版本。
  • Apache 是 Apache Lounge 的当前版本(截至 2019 年 2 月 8 日)。
  • PHP <=5.5 是每个版本的最后构建。
  • PHP >=5.6 是所有当前版本(截至 2019 年 2 月 8 日)。
  • PHP 构建都是来自 php.net 的预构建二进制文件。
  • 所有 VC 运行时都已安装并正常工作(2008、2012、2017)。
  • 为了简单起见,没有加载任何 PHP 扩展。
  • 所有 PHP 版本在它们自己的文件夹中都有自己的“php.ini”文件。
  • 所有二进制文件都经过检查,除了通常的罪魁祸首(依赖于未安装的第三方软件的 PHP 扩展)外,没有缺少依赖项。
  • “php.exe”和“php-cgi.exe”的所有版本都可以在命令行中完美运行,并且不会在 PHP 错误日志中记录任何错误。
  • 最高 7.1 的所有“php-cgi.exe”版本都可以与 Apache 完美配合,也不会记录任何错误。
  • “php-cgi.exe”的 7.2 和 7.3 版本在 Apache 错误日志中显示所有 php 文件的 404 状态,但同样,不要在 PHP 错误日志中记录任何内容。

文件夹结构:

“D:\www\sites\test2\index.php”的内容:

Apache 配置是我认为最小的:

除了 7.1 及更高版本包含“default_charset”指令外,所有 PHP 配置都相同,如果不存在,则会导致 500 内部服务器错误。由于 php.net 的迁移页面,我找到了适用于 7.1 的解决方案(最初也不起作用,但现在可以)。我找不到任何表明 7.2 或 7.3 需要进一步更改的内容。

“php.ini”文件的完整内容如下(XXXXX = 版本 ID):

(我在很多地方读到修复路径信息设置应该是“FcgidFixPathinfo = 1”和“cgi.fix_pathinfo = 1”,但我尝试过没有成功。实际上,打开这些设置只有效果在所有工作的 PHP 版本中,“SCRIPT_NAME”和“PHP_SELF”变量都设置为“D:/index.php”而不是“/index.php”。换句话说,打开它会破坏东西而不是修复任何东西。 )

随着一切的启动和运行,测试就像在“ http://test2.local/index.php ”请求页面一样简单。PHP <=7.1 的结果都是一样的,所以我将使用 7.1 的日志。同样,7.2 和 7.3 的结果是相同的,所以我将使用 7.2 的日志。没有 PHP 版本记录任何错误或崩溃。每个版本都在第一次请求时成功加载并继续愉快地运行,直到重新启动 Apache。

Apache 启动日志(所有 PHP 版本)

用于请求“ http://test2.local/index.php ”(PHP 7.1)的 Apache 日志:

“ http://test2.local/index.php ”(PHP 7.1)的进程监视器屏幕截图

进程监视器屏幕截图 (PHP 7.1)

用于请求“ http://test2.local/index.php ”(PHP 7.2)的 Apache 日志:

“ http://test2.local/index.php ”(PHP 7.2)的进程监视器屏幕截图

进程监视器屏幕截图 (PHP 7.2)

任何帮助弄清楚这个谜团将不胜感激。再次为冗长的阅读道歉。

0 投票
1 回答
31 浏览

php - DOMDocument 有时会返回混乱的字符

我需要在 php 中从外部网站中提取 DOM。我尝试测试 URL,但有时它会显示很多中文字母 :)(更具体地说是 unicode 中的字符)这很奇怪,如果我使用不同的链接,它可以工作,但如果我使用下面的链接并运行 php,例如 3次,在 3. 之后尝试它停止工作(但对于 1、2. 时间它显示正常的 DOM 结构)

网址:https ://www.csfd.cz/film/300902-bohemian-rhapsody/prehled/

3. (ca.) 之后的 DOM 运行:https ://i.stack.imgur.com/lnM1I.png

代码:

有谁知道,该怎么办?

0 投票
2 回答
3775 浏览

php - PHP 7.3 未创建/写入错误日志文件

我刚刚升级到 PHP 7.3(使用 XAMPP),由于某种原因,它似乎没有将错误写入指定的日志文件。

我在页面输出中收到不推荐使用的错误,但它们似乎没有出现在任何日志文件中 - 这是更理想的,因为错误并不总是在页面显示中可见,如果它们是隐藏在代码中例如,在属性值之间生成。

在我的php.ini我有:

编辑:我今天刚刚注意到该文件是最近创建的,并且其中有其他错误(由 php.ini 本身的问题产生的错误,例如不推荐使用的设置track_errors),但仍然没有记录任何关于页面本身引起的问题的记录。

编辑 2:我创建了一个单独的脚本来故意生成错误,而且它们似乎没有正常记录,所以我不确定这些其他的如何没有记录。

为什么我没有从页面记录错误?

0 投票
2 回答
9217 浏览

laravel - Laravel 5.8 安装错误在 database.php 第 58 行:未定义的类常量 'MYSQL_ATTR_SSL_CA'

当我尝试安装 Laravel 5.8 时,它会抛出错误

在 database.php 第 58 行:

未定义的类常量“MYSQL_ATTR_SSL_CA”

在此处输入图像描述

在此之后,我尝试在服务器上运行该应用程序。它有时工作正常。有时它会抛出相同的错误。我也无法在 Artisan 上运行任何命令。为什么会发生这种情况以及如何解决这个问题?

0 投票
2 回答
737 浏览

php - PHP 7+ 日志记录类魔术常量

我刚刚写了一个小“日志”类,想问一个关于这个类的用法的问题,我怎样才能让它更容易使用。

例如:

这就是我目前将错误写入日志文件的方式,但它似乎很复杂?!有没有办法从“调用” php 中获取日志类中的“MAGIC CONSTANTS”?

这是课程代码(也欢迎任何其他提示):

0 投票
0 回答
475 浏览

php - Apache 服务的 PHP 7.3 FPM 连接错误消息并复制它们

问题:

在 Plesk Onyx 版本 17.8.11 更新 #43 上运行网站并将 PHP 7.3.2 作为 Apache 提供的 FPM 应用程序运行。PHP 错误消息被复制并且不在新行上显示错误。

结果:

[2019 年 3 月 5 日星期二 11:08:29.409366] [proxy_fcgi:error] [pid 3293:tid 139890247272192] [client 127.0.0.1:44282] AH01071: Got error 'PHP message: PHP Warning: in_array() 期望参数 2 为数组,空值在 /var/www/vhosts/domain.tld/httpdocs/script.php 第 522 行的 PHP 消息中给出:PHP 注意:数组到字符串的转换在 /var/www/vhosts/domain.tld/httpdocs/script.php在第 524PHP 行消息:PHP 警告:in_array() 期望参数 2 为数组,在 /var/www/vhosts/domain.tld/httpdocs/script.php 中给出的空值在第 522PHP 行消息:PHP 注意:数组到字符串的转换/var/www/vhosts/domain.tld/httpdocs/script.php 第 524 行 PHP 消息:PHP 警告:in_array() 期望参数 2 为数组,/var/www/vhosts/domain.tld/httpdocs/ 中给出 null script.php 第 522 行 PHP 消息:PHP 注意:数组到字符串的转换在 /var/www/vhosts/domain.tld/httpdocs/script.php 第 524 行,引用:https://new.domain.tld/webpage.html

预期结果:

[2019 年 3 月 5 日星期二 11:08:29.409366] [proxy_fcgi:error] [pid 3293:tid 139890247272192] [client 127.0.0.1:44282] AH01071:PHP 警告:in_array() 期望参数 2 为数组,在 / 中给出 null第 522 行的 var/www/vhosts/domain.tld/httpdocs/script.php,引用者:https://new.domain.tld/webpage.html

[2019 年 3 月 5 日星期二 11:08:29.409366] [proxy_fcgi:error] [pid 3293:tid 139890247272192] [client 127.0.0.1:44282] AH01071:PHP 注意:/var/www/vhosts/domain 中的数组到字符串的转换。 tld/httpdocs/script.php 在第 524 行,引用者:https://new.domain.tld/webpage.html

问题:

我最近从 PHP 5.6 迁移到 7.3,输出到我的日志文件的错误是不同的。如何让 PHP 不重复错误并单独记录它们?

更新:

我能够通过打开 来删除重复的错误ignore_repeated_source Onphp.ini但是错误消息仍然被连接在一起。

0 投票
1 回答
132 浏览

php - 如何在 PHP-CLI(7.3 版)中输入 switch case 变量?

我的代码如下所示:

我正在使用$input=fgets(STDIN)输入,但即使大小写匹配,它也不会执行相应的代码。Avar_dump($input);或 anecho $input;显示该值已正确分配(至少在我看来)。我需要在代码中添加(或修改)什么?