PHP定义函数在包含文件中不起作用

PHP定义函数在包含文件中不起作用,php,include,constants,Php,Include,Constants,假设我有3个PHP文件 file1.php <?php define('INTRO','Hello world'); ?> 它应该显示为 My first text is = Hello world My Second text is = Hello world 这是因为file1.php中的常量值没有传递到file3.php 它在我的pc上运行良好,但在服务器上运行不正常 我的电脑和服务器都使用Windows server 2016 64位+Apache2.4 64位+

假设我有3个PHP文件

file1.php

<?php
    define('INTRO','Hello world');
?>
它应该显示为

My first text is = Hello world
My Second text is = Hello world
这是因为
file1.php
中的常量值没有传递到file3.php

它在我的pc上运行良好,但在服务器上运行不正常

我的电脑和服务器都使用Windows server 2016 64位+Apache2.4 64位+Php5.6 64位


服务器设置中是否缺少某些内容?

将您的
include
更改为
require
,您可能会看到您的文件未被包含,include将以静默方式失败

我猜你可能有一个大写问题,Linux文件系统是区分大小写的windows不是。因此,如果您的include使用
file1.php
,但您的文件名为
file1.php
,并带有大写字母,那么它将在Windows而不是Linux上工作

那么这个包含的东西就没告诉你就死了。代码在本地工作没有问题,因此只剩下环境

此外,在调用put的第一个文件中启用错误报告可能会有所帮助

<?php
 error_reporting(E_ALL);
 ini_set('display_errors', '1'); 
它会在定义之前检查它是否已定义,但最好只使用一次
require\u

同样在语义上,如果需要包含一个文件(即程序在没有它的情况下中断),那么应该使用
require
包含它


干杯。

对不起,对我有用。将您的包含更改为
要求
,您可能会看到您的文件未被包含,包含将自动失败。我猜你可能有一个大写问题,linux文件系统是区分大小写的windows不是。因此,如果
File1.php
是capital,那么它将在Windows上工作,而不是在Linux上,那么include就不会告诉您了。代码在本地工作没有问题,因此只剩下环境。但是您应该注意:使用未定义的常量INTRO-假定的“INTRO”使用
错误报告(E_ALL);ini_集('display_errors','1')如果错误报告未打开,则不显示。。。这只是一个通知。这就是为什么他们把
INTRO
作为一个词,因为它没有定义,如果它没有定义,那么include就失败了。如果include只在服务器上失败,那么很有可能它是大写的,正如我所说的。如果我使用require,同样的问题:)
My first text is = INTRO
My Second text is = INTRO
My first text is = Hello world
My Second text is = Hello world
<?php
 error_reporting(E_ALL);
 ini_set('display_errors', '1'); 
if(!defined("INTRO")) define('INTRO','Hello world');