我在共享主机上,并由fastcgi运行Cpanel,Apache,PHP。 PHP将错误日志存储在哪里?

是否可以通过其他方法在共享主机环境中找到错误日志,而不必遍历整个站点结构来查找error_log文件?

我可以使用php.ini(我使用的是PHP 5.2.16版)。

评论

在Linux上,是/ var / log / httpd / error_log或/var/log/apache2/error.log。这些文件由root拥有,因此您需要是root或使用sudo来查看或读取。

php --info | grep错误

对于那些正在寻找Windows解决方案的人,请使用php --info | findstr / r / c:“ error_log”以查看日志文件在哪里。

对我来说很奇怪...我托管了网站,PHP日志与Apache日志存储在同一文件中...在管理面板的日志中,当我单击它时,可以选择显示完整的Apache错误日志,例如,有关用户进入不应进入的地方的错误。但是,同样,在同一文件中有PHP显示的错误。

如果使用fastcgi,则@soaku apache本身不会运行PHP。当您使用作为Apache模块的mod_php时,Apache处理php。这意味着使用mod_php时错误可能并且很可能会出现在apache日志中,但是使用cgi或fastcgi不会出现这种情况

#1 楼

如果PHP是apache2模块,则PHP将错误日志存储在/var/log/apache2中。
共享主机通常将日志文件存储在根目录/log的子文件夹中。
但是...如果可以访问php.ini文件,则可以执行以下操作:

error_log = /var/log/php-scripts.log


根据rinogo的评论:如果您使用的是cPanel,则可能要查找的主日志文件(默认情况下)存储在

/usr/local/apache/logs/error_log


如果其他所有方法均失败,则可以使用

<?php phpinfo(); ?>

检查日志文件的位置

评论


“如果RHEL等等,则Php将错误日志存储在/ var / log / apache2中,如果php是apache2”则不在RHEL等上,该软件包的名称为'httpd'。确实不能假设软件包名称在发行版之间是一致的。

–chelmertz
13年5月14日在9:07

仅供Google使用者参考-如果您使用的是cPanel,则您可能要查找的主日志文件(默认情况下)存储在/ usr / local / apache / logs / error_log中

– rinogo
2013年12月4日19:11



但是请检查<?php phpinfo();的'error_log'部分; ?>确认路径

–doub1ejack
2014年5月27日19:44

它将在phpinfo部分显示它吗?在error_log中,我看到的所有键/值都是'error_log'并且没有实际路径

–罗伯特·辛克莱尔
17年8月28日在21:51

我猜来自@ Hi-Angel的问题正试图通过... PHP shell(php -a)运行实际的PHP标签(而不是纯PHP代码)。

–igorsantos07
6月19日7:01

#2 楼

尝试phpinfo()并检查“ error_log”

评论


它只是说error_log没有指定路径。我猜可能是因为它位于共享主机环境中,如果我们可以访问它,我们将看到其他所有人的网站错误。

– PHPLOVER
2011-2-26 15:56

如果您尝试echo ini_get('error_log');,@ PHPLOVER会说同样的话吗?

–chelmertz
2011-2-26在16:27

我没有尝试,但是在php.ini文件中说的是一样的,所以我所做的是更改php.ini文件中的路径,并检查它是否正常工作。尽管我将路径更改为记录错误(文档根外部),它仍然记录所有错误吗?谢谢phplover

– PHPLOVER
2011-2-26在16:37

@PHPLOVER:您可以通过设置error_reporting(E_ALL | E_STRICT); se.php.net/manual/en/function.error-reporting.php轻松控制报告级别

–chelmertz
2011-2-26在16:39

我的也说error_log,不知道在哪里寻找。这在Google上打出了nr,但没有回答。

– HMR
2014年6月10日7:30

#3 楼

Linux

php --info | grep error 


终端将输出错误日志位置。

Windows

php --info | findstr /r /c:"error_log"


命令提示符将输出错误日志位置

设置日志位置

打开您的php.ini并添加以下行:

error_log = /log/myCustomLog.log




感谢@ chelmertez,@ Boom(对问题的评论)。


评论


我在Linux上。这没有为我提及日志位置。

– Sirex
16 Mar 24 '16 at 1:27

@Sirex php -info输出什么吗?您需要确保php实际上正在调用PHP来运行...

– Cullub
16-4-8在14:43



另外,php当前可能未记录任何内容。在这种情况下,您可以打开php.ini,并将error_reporting设置为E_ALL和〜E_DEPRECATED&〜E_STRICT,或者您想看到的任何错误,然后将error_log设置为您要记录错误的目录的路径。 (注意:这不是文件的完整路径,只是目录的完整路径。)

– Cullub
16年4月8日在14:52

我只在/ var / log / httpd /中找到旧日志,大多数人建议在其中查找,但是运行php --info | grep日志将我指向最近的日志所在的/ var / www / logs。

–ChrisBob
17年2月2日在16:38

设置日志位置后,不要忘记重启Apache:sudo /etc/init.d/apache2 restart

–BrianHenryIE
18年7月3日在0:08

#4 楼

在LAMP环境中,php错误默认定向到以下文件。

/var/log/httpd/error_log


所有访问日志都位于以下位置:

/var/log/httpd/access_log


评论


因此,注释掉php错误日志文件规范,它将写在这里吗?

–用户
15年2月3日,16:20

#5 楼

如何在Linux上找到PHP错误日志:

eric@dev /var $ sudo updatedb
[sudo] password for eric:
eric@dev /var $ sudo locate error_log

/var/log/httpd/error_log


另一种等效方法:

eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null

/var/log/httpd/error_log


#6 楼

看来默认情况下php不会在任何地方记录错误,php.ini中的error_log键在我所见过的所有安装程序中都已注释掉。
查找php.ini文件。 locate php.ini

在这些文件中搜索error_reporting值;

应该将其设置为足以满足您需求的php日志级别。 E_ALL & ~E_DEPRECATED & ~E_STRICT值,以确保它指向实际位置且未注释掉。正常。可能是error_log



#7 楼

在php.ini文件中设置error_log变量时,应使用绝对路径,否则,错误日志将根据您的相对路径进行存储。

error_log = /var/log/php.errors


其他解决方案是编写简单的脚本,该脚本将列出目录树中的所有错误日志文件。

#8 楼

如果您使用的是Google计算引擎,也可以是/var/log/apache2/error.log

您可以像这样查看尾巴:

tail -f /var/log/apache2/error.log


#9 楼

php --info | grep error


这很有帮助。 sjas对问题发表了评论。所以我把它作为答案。

评论


(看来)这将输出PHP命令行设置(例如/etc/php/7.1/cli/php.ini)的值,而不是Apache设置。

–BrianHenryIE
18年7月3日,0:10

在PHP ver 7.4中,我看到以下内容:#error_log =>没有值=>没有值我不知道这是否意味着什么都没有写,或者是否使用了默认的目标路径。

– Christinmtown
12月9日13:32

#10 楼

如果您已从源代码构建Apache和PHP,则默认情况下会在${Apache install dir}/logs/error_log(即通常为/usr/local/apache2/logs/error_log)处生成错误日志。否则,如果您是从存储库中安装的,则可以在/var/log/apache2/error_log上找到它。您还可以在php.ini中设置路径,并通过调用phpinfo()进行验证。

#11 楼

最好的方法是查看您的httpd.conf文件,并查看默认设置。您的特定虚拟主机也可能会覆盖它。我首先查看/etc/httpd/conf/httpd.conf/etc/apache2/httpd.conf并搜索error_log。它可以列为/ var / log / httpd / error_log或/var/log/apache2/error_log,但也可以简单列为logs/error_log。在这种情况下,它是相对路径,这意味着它将位于/etc/httpd/logs/error_log下。如果仍然找不到它,请检查httpd.conf文件的底部,并查看虚拟主机的位置。它可能在/etc/httpd/conf.d/<-中作为“其他”或“其他”。您的虚拟主机可以使用ErrorLog“ / path / to / error_log”覆盖它。

#12 楼

NGINX通常将其存储在/var/log/nginx/error.log或access.log中。
(无论如何在Ubuntu上)

#13 楼

在php.ini中配置错误日志文件时,可以使用绝对路径或相对路径。相对路径将根据生成脚本的位置来解析,并且您将在脚本所在的每个目录中获得一个日志文件。如果希望所有错误消息都移至同一文件,请使用绝对路径该文件。

在此处查看更多信息:http://www.php.net/manual/zh/ref.errorfunc.php#53025

评论


谢谢,这解决了我的问题。相对定义的行为实在是la脚,日志文件遍布htdocs文件夹,却不知道从哪里开始。我希望与其他设置相对于安装文件夹。 +1。

–爱德华多
2014年5月2日,0:56

#14 楼

如果您使用php5-fpm,则日志默认值应为

/var/log/php5-fpm.log


#15 楼

如果需要,可以在任意位置进行函数调用:
error_log($ errorMessageforLog。“ \ n”,4,'somePath / SomeFileName.som');

#16 楼

通过在命令行上运行ErrorLog在httpd.conf文件中搜索cat <file location> | grep ErrorLog。例如:

$ cat /etc/apache2/httpd.conf | grep ErrorLog


输出:

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/private/var/log/apache2/error_log"


找到以ErrorLog开头的行,就可以得到答案。

注:对于虚拟主机,可以编辑虚拟主机文件httpd-vhosts.conf以指定其他日志文件位置。

#17 楼

cPanel错误日志位于:

/ usr / local / cpanel / logs /
/ usr / local / apache / logs /

默认情况下,Apche日志为位于内部:

/ var / log / apache



/ var / log / apache2

正在使用自定义日志位置,则可以通过运行以下命令进行检查:

cat /etc/apache2/conf/httpd.conf | grep ErrorLog

如果遇到apache2目录不存在的错误,则可以通过以下命令运行此命令以找到正确的位置:

apache


or

whereis apache2


#18 楼


您可以进入“文件管理器”的“检查日志”文件夹。
检查“ public_html”文件夹中的日志文件。
检查日志存储位置的“ php phpinfo()”文件。

#19 楼

您在共享环境中,找不到错误日志,请始终检查cPanel cPanel仪表板上是否有选项Errors。如果您无法找到错误日志,则可以在其中找到它。错误是显示错误日志的地方。

共享环境上的其他位置:
/ home /您的用户名/日志
/ home /您的用户名/ public_html / error_log

#20 楼

像这样的东西: br />

#21 楼

error_log()设置为true时,Wordpress会将/wp-content/debug.log消息定向到WP_DEBUG_LOG

请参阅WordPress文档以获取WP_DEBUG_LOG

#22 楼

对于PHP-FPM,只需在error_log的配置文件中搜索:
 # cat /etc/php-fpm.d/www.conf | grep error_log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
 


#23 楼

有点晚了,给出了很多很好的答案,但是我出于某种原因将其存储在:
/var/log/php-errors.log
我正在使用Ubuntu Server 16.04和PHP 7.1.28。