关于log4php中cannot load log4php.properties 的问题

解决log4php配置加载问题
本文介绍了解决log4php在不同PHP环境下配置文件加载失败的问题,通过修改log4php.properties文件中变量赋值的引用方式,使配置能在服务器上正确加载。

我在本地调试环境中引入了log4gphp,在本地可正常使用它来记录信息,但是一旦上传到服务器却怎么都调试不了,一直在提示:

LoggerPropertyConfigurator::doConfigure() cannot load log4php.properties configuration.如下:


找到提示这个错误的文件:log4php目录下的LoggerPropertyConfigurator.php,第319行($url的值就是:log4php.properties):

 function doConfigure($url, &$repository)
    {
        $properties = @parse_ini_file($url);
        if ($properties === false) {
            LoggerLog::warn("LoggerPropertyConfigurator::doConfigure() cannot load '$url' configuration.");
            return false;
        }
        return $this->doConfigureProperties($properties, $repository);
    }

从这里可以看出应该是parse_ini_file函数没有正常执行,一般来说我们的log4php.properties文件内容基本上就是这样:每个赋值都是没有引号括起来的,


  1. log4php.rootLogger=DEBUG, A1  
  2. log4php.appender.A1=LoggerAppenderRollingFile  
  3. log4php.appender.A1.file=webdisk.log  
  4. log4php.appender.A1.layout=LoggerLayoutTTCC  
  5. log4php.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd   HH:mm:ss}   [%t]   %C{1}:%M   %p   %m%n  
  6. log4php.appender.A1.MaxFileSize=1024  
  7. log4php.appender.A1.MaxBackupIndex=3

 

网上查了下大概是这样:

问题来由:
我本地的开发环境中PHP的版本为5.3.13,而服务器的产品环境中PHP的版本为5.2.12.
在php.ini文件中,
所有的的变量赋值采用双引号引用
处理方式:
将log4php.properties文件中对变量赋值的单引号引用改为双引号引用,改为:

  1. log4php.rootLogger="DEBUG, A1"
  2. log4php.appender.A1="LoggerAppenderRollingFile"
  3. log4php.appender.A1.file="webdisk.log"
  4. log4php.appender.A1.layout="LoggerLayoutTTCC"
  5. log4php.appender.A1.layout.ConversionPattern="%d{yyyy-MM-dd   HH:mm:ss}   [%t]   %C{1}:%M   %p   %m%n"
  6. log4php.appender.A1.MaxFileSize="1024"
  7. log4php.appender.A1.MaxBackupIndex="3"

至此:问题解决!


在使用three.js进行3D图形开发时,遇到“Cannot read properties of undefined (reading 'isGLBufferAttribute')”这个错误通常是由于以下几种原因导致的: 1. **属性未定义**:在访问某个属性时,该属性可能未定义或未正确初始化。 2. **版本不兼容**:使用的three.js版本与某些插件或自定义代码不兼容。 3. **资源加载问题**:某些资源(如纹理、模型等)未能正确加载,导致后续操作失败。 4. **代码错误**:代码中存在逻辑错误,导致某些对象未正确创建或初始化。 以下是一些可能的解决方法: ### 1. 检查属性初始化 确保所有需要访问的属性都已正确初始化。例如: ```javascript let bufferAttribute; if (bufferAttribute) { console.log(bufferAttribute.isGLBufferAttribute); } else { console.error('bufferAttribute is undefined'); } ``` ### 2. 版本兼容 确保使用的three.js版本与所有插件或自定义代码兼容。可以尝试更新到最新版本或回退到兼容版本。 ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script> ``` ### 3. 资源加载 确保所有资源都已正确加载。可以使用`onLoad`回调来确保资源加载完成后再进行操作。 ```javascript const loader = new THREE.GLTFLoader(); loader.load('path/to/model.gltf', function(gltf) { scene.add(gltf.scene); // 其他操作 }, undefined, function(error) { console.error(error); }); ``` ### 4. 代码检查 仔细检查代码逻辑,确保对象创建和初始化顺序正确。例如: ```javascript const geometry = new THREE.BufferGeometry(); // 添加属性 geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3)); // 创建网格 const mesh = new THREE.Mesh(geometry, material); scene.add(mesh); ``` 通过以上步骤,可以逐步排查并解决“Cannot read properties of undefined (reading 'isGLBufferAttribute')”这个错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值