我在哪里可以找到错误日志文件?我需要检查它们以解决安装suPHP后显示的内部服务器错误.
当我无法打开文件时,如何获得比'FALSE'更有意义的内容.
$myFile = "/home/user/testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
Run Code Online (Sandbox Code Playgroud)
当我使用该die语句时,can't open file返回给客户端,它几乎没用.如果我删除它,不会引发错误.如果我退货$fh就是FALSE.我尝试了本地文件名和绝对文件名.我的index.html文件位于我的孔文件夹的一个子文件夹中.此外,我正在使用suPHP与我试图写入的文件夹有权限0755(suPHP要求所有文件夹).
我如何找出问题的原因,或者至少在尝试打开文件之前查询它.
如何将登录类似功能设计为使用suPHP的文件权限.例如,如果我有一个网站www.example.com和以下两个用户拥有自己的主目录,每个用户都有一个php脚本test.php,并且该validateUser.php脚本属于目录中的另一个用户(root,www-data,apache ...)/home.
/home/
??? validateUser.php
??? user1
? ??? test.php
??? user2
??? test.php
user1可以user2's通过访问访问脚本www.example.com/user2/test.php,反之亦然.相反,我想要的,是渠道的所有传入的请求,使用类似mod_rewrite的,对validateUser.php.但是,这样做会导致执行所有脚本作为validateUser.php目标test.php脚本的所有者,而不是目标脚本.
无论如何在suPHP启动之前调用php脚本,然后允许suPHP继续,或完全中止.
编辑这是我提出的第二个赏金.我给Gustav的第一个b/c他给出了一个很好的部分答案.我会提到我到目前为止所尝试的内容,以及为什么它们都不适合我.
1)我尝试使用mod_rewrite将URL重定向validateUser.php到登录用户,或者调用他们想要调用的任何脚本.问题是,我已经把我的虚拟主机,使得每个用户都有自己的虚拟站点(即www.user1.example.com,www.user2.example.com......如果这是一个不好的设计方法,随意粗暴地指出来).因此,虽然OS看到如上所述的文件结构,但在线,根目录也是这样设置的
VirtualHost = www.user1.example.com
??? validateUser.php
??? test.php
VirtualHost = www.user2.example.com
??? validateUser.php
??? test.php
Run Code Online (Sandbox Code Playgroud)
当然,我只是将一份副本移动validateUser.php到每个用户的目录中.问题是现在用户可以删除该文件并在其中放置他们想要的任何内容,就像根本不需要登录一样.解决这个问题的方法是使主文件夹变粘(不是我建议对主文件夹执行的操作)并使validateUser.phproot拥有.但现在它将执行AS root,因为这是suPHP.这就是我放弃的地方.
2)我可以使用古斯塔夫的mod_auth建议,但我不喜欢它预先要求密码(如旧学校网站).
3)我已经考虑了1)的变体,如果我可以在虚拟主机之间重定向.例如,像这样重构虚拟主机
VirtualHost = www.user1.example.com
??? test.php
VirtualHost …Run Code Online (Sandbox Code Playgroud) 我正在开发一个基于Ubuntu 16.04的新LAMP服务器,但似乎默认存储库中没有可用的libapache2-mod-suphp软件包.在我以前的Ubuntu服务器上,它可以通过一个简单的apt-get install libapache2-mod-suphp获得.
有没有人有可能发生的事情?
我的服务器使用 suPHP,因此每个网站都有自己的 php.ini 文件。我的主机建议在我的 .htaccess 文件中添加以下内容:
<IfModule mod_suphp.c>
suPHP_ConfigPath /home/user/public_html
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这基本上指向站点的 php.ini 文件。但是,我试图在不需要编辑的所有站点上拥有一个标准的 .htaccess 文件 - 基本上是我开始的“样板”站点的一部分。我尝试将上面的内容改成这样:
<IfModule mod_suphp.c>
suPHP_ConfigPath %{DOCUMENT_ROOT}/public_html
</IfModule>
Run Code Online (Sandbox Code Playgroud)
但这行不通。正如你所知,我可能不明白这一切是如何运作的。任何人都可以帮助我完成上面的代码,这样我就不需要为每个 .htaccess 文件输入确切的路径,并让 Apache 计算出我的 php.ini 文件的路径吗?
我希望这是有道理的,解释起来有点困难!
我在CentOS服务器上设置了Apache.我的第一个测试脚本index.php以及其他任何脚本导致:
500 Internal Server Error
Run Code Online (Sandbox Code Playgroud)
我打开了日志文件(在我的情况下是/ usr/local/apache/logs/error_log和/ usr/local/apache/logs/suphp_log),我发现了一些条目如下:
SoftException in Application.cpp:422: Mismatch between target UID (99) and UID (32010) of file "/usr/local/apache/htdocs/{DIRECTORY OF MY PROJECT}/index.php"
Run Code Online (Sandbox Code Playgroud)
-和-
[Wed Feb 11 15:16:03 2015] [warn] UID of script "/usr/local/apache/htdocs/{DIRECTORY OF MY PROJECT}/index.php" is smaller than min_uid
Run Code Online (Sandbox Code Playgroud)
我理解我的fie权限和/或所有权是错误的.CentOS环境中的网站脚本是否有任何建议的文件所有权?
这个问题可能有点长而且具体,但我一直试图找到以下问题的确定答案,大约一个月了,我还没有找到决定性的信息.一个特定的问题很难概括,如果我遇到类似的问题,即使特定的服务器配置与我的不同,它也会提供信息.
我的服务器是运行cPanel(WHM)的VPS,PHP模式是SuPHP.该服务器拥有768MB的RAM,并托管了大约12个网站.有些是非常耗费内存的,而其他几乎根本不使用任何内存或CPU.
我最近为我的一个客户安装了一个Magento商店,并且一直在尝试不同的设置以实现性能提升.在我安装xCache并将PHP配置为以FCGID或DSO运行之前没有任何帮助(因为xCache不能与SuPHP一起使用).这种配置将性能提高了2/3(意味着页面加载速度提高了约3倍).
唯一的挫折是,几分钟后,服务器内存不足,我不得不重置它.所以现在我回到SuPHP,事情很好.
即使我禁用了xCache并且只保留了FCGID或DSO模式而不是SuPHP,服务器也会在大约30分钟内耗尽内存.因此,罪魁祸首似乎是PHP运行,而不是SuPHP.
我还注意到,当我从不同的WHM定义的用户打开一个新的前端URL时,我的内存使用率上升了,但是当我从同一个WHM用户帐户打开多个URL时,用法似乎保持相当稳定.
到那时为止:
此外,我正在考虑更新我的其他一些服务器以使用xCache.您会为以下服务器推荐什么配置设置和PHP模式(SuPHP,DSO或FCGI)和xCache?