问题描述
我有一个很奇怪的问题。
当我在浏览器中打开以下脚本并执行该脚本时,一切都会按预期进行。即使我在命令行中调用脚本,也可以得到预期的结果。
但是,如果我在后台作业中运行脚本,则该脚本将在“ preg_match”函数中中止,而不会出现任何错误。我在任何地方都没有错误消息,无论是在日志中还是在其他任何地方。我还检查了该功能是否存在,并且确实存在。
该脚本似乎在preg_match中终止,并且未显示任何有关可能的错误的消息。所以我只得到输出“ CHECKPOINT 1”。
我已经检查了PHP版本,并且到处都检查了相同的版本(相同的路径)。而且pcre的设置是相同的。
是否可能有不同的preg_match模块或功能?有什么办法可以检查功能发生了什么?
使用try&catch,我没有得到有关该问题的任何信息。
<?php
class pcre_check
{
public function setUp() {
}
public function perform() {
echo "CHECKPOINT 1";
preg_match("/[0-9]{4}/","6876 ABCDEFGH",$matches,PREG_OFFSET_CAPTURE);
print_r($matches);
echo "CHECKPOINT 2";
}
public function tearDown() {
}
}
$test = new pcre_check();
$test->setUp();
$test->perform();
$test->tearDown();
?>
系统信息:
- Apache服务器
- PHP 7.4.2
同一脚本可在生产服务器上在线运行。只有在我的本地服务器上,我才遇到这个问题。
似乎正则表达式存在问题。函数preg_replace也不起作用,但是用普通字符串替换的str_replace起作用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)