是否可以通过其他方法在共享主机环境中找到错误日志,而不必遍历整个站点结构来查找error_log文件?
我可以使用
php.ini
(我使用的是PHP 5.2.16版)。#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 楼
Linuxphp --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。
评论
在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不会出现这种情况