我在 Windows 上的 WSL 上运行 PHP,同时运行 nginx+php-fpm。Web 组件运行 php 正常,但控制台 PHP 出于某种原因生成操作码输出。例如,我有这样的 PHP 文件:
?php echo "测试OK\r\n";
当我运行它时
php 测试.php
它将产生以下输出:
root@computer:/mnt/d/php/zona.sp#php test.php
$_main: ; (lines=2, args=0, vars=0, tmps=0) ; (传递 1 之后) ; /mnt/d/php/zona.space/test.php:1-3 L0 (2): ECHO string("test ok ") L1 (3): RETURN int(1)
$_main: ; (lines=2, args=0, vars=0, tmps=0) ; (第 2 次传递之后) ; /mnt/d/php/zona.space/test.php:1-3 L0 (2): ECHO string("test ok ") L1 (3): RETURN int(1)
$_main: ; (lines=2, args=0, vars=0, tmps=0, no_loops) ; (第 7 次传递之后) ; /mnt/d/php/zona.space/test.php:1-3 ; 返回 [long] RANGE[1..1] L0 (2): ECHO string("test ok ") L1 (3): RETURN int(1) test ok
为什么会发生这种情况?
root@computer:/mnt/d/php/zona.sp# php -v
PHP 7.2.9-1 (cli)(构建于:2018 年 8 月 19 日 06:56:13)(NTS)
版权所有 (c) 1997-2018 PHP 集团
Zend Engine v3.2.0,版权所有 (c) 1998-2018 Zend Technologies
使用 Zend OPcache v7.2.9-1,版权所有 (c) 1999-2018,Zend Technologies
答案1
在您的 PHP 配置中的某个地方,您已经设置opcache.opt_debug_level
设置为非零值。从php.ini
设置该设置的 ini 文件或包含的 ini 文件中删除该设置,或将其恢复为默认值 0。