


linux - log4php prompts during use: The configuration file cannot be loaded
The following is a line of nginx error log. In order to facilitate viewing, I have separated it for everyone:
<code>016/08/14 14:34:49 [error] 2819#0: *59 FastCGI sent in stderr: "PHP message: PHP Warning: log4php: Configuration failed. Error loading configuration file: failed to load external entity "/alidata1/****/logger_conf.xml" Using default configuration. in /alidata1/****/configurators/LoggerConfiguratorDefault.php on line 475" while reading response header from upstream, client: 101.226.103.72, server: ****, request: "POST /share/notify HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "*****" </code>Copy after loginCopy after loginIntroduction
1. Use Logger::getRootLogger to call, reference Log4php at the entrance, and load Logger.configure('*') at the same time.
2. This problem did not occur before. I suspect it is because I adjusted the permissions of nginx once. The user of nginx was apache before, but now I changed it to nobody. (But this suspicion has no basis. I have restarted nginx countless times)
3. This situation is good and bad sometimes. Sometimes I can use Logger to print output normally, but most of the time the above error will be reported. (This also shows that there is no problem with the configuration file permissions). Sometimes it gets better when I restart php-fpm, but there is no connection at all. The work process of php-fpm also has nobody permission
I have confirmed the situations that can be ruled out
<code>1. 文件确实存在,文件的权限已经是777.(甚至文件路径中权限我都修改成了777) </code>
Has anyone encountered the same problem? I now call Logger.configure() at the entrance to specify the calling file. Why does the above error occur? Can you help me take a look
Reply content:
The following is a line of nginx error log. In order to facilitate viewing, I have separated it for everyone:
<code>016/08/14 14:34:49 [error] 2819#0: *59 FastCGI sent in stderr: "PHP message: PHP Warning: log4php: Configuration failed. Error loading configuration file: failed to load external entity "/alidata1/****/logger_conf.xml" Using default configuration. in /alidata1/****/configurators/LoggerConfiguratorDefault.php on line 475" while reading response header from upstream, client: 101.226.103.72, server: ****, request: "POST /share/notify HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "*****" </code>Copy after loginCopy after loginIntroduction
1. Use Logger::getRootLogger to call, quote Log4php at the entrance, and load Logger.configure('*') at the same time.
2. This problem did not occur before. I suspect it is because I adjusted the permissions of nginx once. The previous user of nginx was apache, but now I changed it to nobody. (But this suspicion has no basis. I have restarted nginx countless times)
3. This situation is good and bad sometimes. Sometimes I can use Logger to print output normally, but most of the time the above error will be reported. (This also shows that there is no problem with the configuration file permissions). Sometimes it gets better when I restart php-fpm, but there is no connection at all. The work process of php-fpm also has nobody permission
I have confirmed the situations that can be ruled out
<code>1. 文件确实存在,文件的权限已经是777.(甚至文件路径中权限我都修改成了777) </code>
Has anyone encountered the same problem? I now call Logger.configure() at the entrance to specify the calling file. Why does the above error appear? Can you help me take a look
Solution to the problem
Thanks for this article, please click to view
A brief introduction to the cause of the problem: the imported class contains this function: libxml_disable_entity_loader
My log4php.properties
<code>log4php.rootLogger=INFO, stderr, stdout, file log4php.appender.stdout=LoggerAppenderConsole log4php.appender.stdout.layout=LoggerLayoutPattern log4php.appender.stdout.layout.ConversionPattern=%date{ISO8601} [%p] %m%n log4php.appender.stdout.threshold=INFO log4php.appender.stderr=LoggerAppenderConsole log4php.appender.stderr.layout=LoggerLayoutPattern log4php.appender.stderr.target=stderr log4php.appender.stderr.threshold=ERROR log4php.appender.stderr.layout.ConversionPattern=%date{ISO8601} [%p] [%l] %m%n log4php.appender.file=LoggerAppenderDailyFile log4php.appender.file.layout=LoggerLayoutPattern log4php.appender.file.threshold=ERROR log4php.appender.file.file=commands/logs/%s-error.log log4php.appender.file.layout.ConversionPattern=%date{ISO8601} [%p] [%l] %m%n</code>
PHP initialization
<code>\Logger::configure(__DIR__ . '/log4php.properties'); $logger = \Logger::getLogger('default'); $logger->info('xxx');</code>

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Steps to create a Docker image: Write a Dockerfile that contains the build instructions. Build the image in the terminal, using the docker build command. Tag the image and assign names and tags using the docker tag command.

You can query the Docker container name by following the steps: List all containers (docker ps). Filter the container list (using the grep command). Gets the container name (located in the "NAMES" column).

How to use Docker Desktop? Docker Desktop is a tool for running Docker containers on local machines. The steps to use include: 1. Install Docker Desktop; 2. Start Docker Desktop; 3. Create Docker image (using Dockerfile); 4. Build Docker image (using docker build); 5. Run Docker container (using docker run).

Docker container startup steps: Pull the container image: Run "docker pull [mirror name]". Create a container: Use "docker create [options] [mirror name] [commands and parameters]". Start the container: Execute "docker start [Container name or ID]". Check container status: Verify that the container is running with "docker ps".

VS Code system requirements: Operating system: Windows 10 and above, macOS 10.12 and above, Linux distribution processor: minimum 1.6 GHz, recommended 2.0 GHz and above memory: minimum 512 MB, recommended 4 GB and above storage space: minimum 250 MB, recommended 1 GB and above other requirements: stable network connection, Xorg/Wayland (Linux)

PHP has shaped the network over the past few decades and will continue to play an important role in web development. 1) PHP originated in 1994 and has become the first choice for developers due to its ease of use and seamless integration with MySQL. 2) Its core functions include generating dynamic content and integrating with the database, allowing the website to be updated in real time and displayed in personalized manner. 3) The wide application and ecosystem of PHP have driven its long-term impact, but it also faces version updates and security challenges. 4) Performance improvements in recent years, such as the release of PHP7, enable it to compete with modern languages. 5) In the future, PHP needs to deal with new challenges such as containerization and microservices, but its flexibility and active community make it adaptable.

Create a container in Docker: 1. Pull the image: docker pull [mirror name] 2. Create a container: docker run [Options] [mirror name] [Command] 3. Start the container: docker start [Container name]

The reasons for the installation of VS Code extensions may be: network instability, insufficient permissions, system compatibility issues, VS Code version is too old, antivirus software or firewall interference. By checking network connections, permissions, log files, updating VS Code, disabling security software, and restarting VS Code or computers, you can gradually troubleshoot and resolve issues.
