Articles of PHP

PHP fopen总是失败,权限被拒绝

我正在将几个Wordpress博客迁移到AWS的过程中,并遇到了文件权限问题,在过去的几个小时里,这些文件权限已经成功挫败了我。 最简单的fopen调用总是失败,“未能打开stream:权限被拒绝”: <?php $handle = fopen('test.txt', 'w') or die('Can\'t open file'); ?> 我已经尝试/检查了以下内容 我正在写的目录具有正确的文件权限(755)和正确的所有权。 这是/ home的path。 我正在通过getcwd()确认正确的目录 testingPHP脚本散列与我尝试写入的path相同的所有权,并更正权限(644)。 我正在运行mod_suexec,以确保脚本以与我正在写入的path相同的用户和组执行。 函数getmyuid()和getmygid()返回正确的用户和组ID(编辑:这是错误的见下文)。 PHP安全模式在php.ini中被禁用。 fopen不是一个不允许的PHP函数。 使用open_basedir被禁用。 有什么我错过了可能造成这个? 我怀疑我一直在盯着这个这么久,我错过了一些明显的东西。 更新:应用womble的build议后,我开始认为这个问题比恶劣的权限或PHP错误configuration更加恶毒。 我设法得到上面的代码写出一个文件,但是,即使PHP脚本执行正确的用户和组生成的文件所有权和组被设置为Apache的。 如果我从命令行执行相同的testing脚本,则发出的文件具有正确的权限。 这使我相信这是我使用mod_suexec的一个问题。 编辑:我使用getmyuid()和getmygid()是不正确的,因为它们只返回脚本文件的用户和组,而不是它运行的权限。 更正确的方法是使用这样的comething: <?php echo exec('ps -up '.getmypid()); ?>

如何在使用pecl安装php扩展时传递configuration选项?

有一个PHP扩展,当我用pecl命令安装时,需要传递一个configuration选项。 我找不到办法做到这一点。 当然,我可以手动安装它,但是我需要它可以用一个命令来安装它 – 这样它就可以通过puppet轻松安装。 有任何想法吗?

什么时区是一个cron作业使用?

我猜测我的PHP时间和服务器时间是有区别的。 当我用PHP检查当前时间时,显示正在使用MST。 但是,cron作业没有在正确的时间运行。 我怎样才能查看服务器本身使用什么时区,而不是PHP设置使用?

我如何保护我的站点地图索引文件和sitemap.xml文件从leechers?

我有一个“内容”网站,一些嫖客和419名骗子喜欢疯狂爬行,这也产生成本和性能问题。 :(我没有select:我需要阻止他们访问站点地图文件和索引。:( 我正在做与Facebook一样的:我dynamic生成一个站点地图索引(/ sitemap.php)。 我使用DNS反向查找(PHP)和代理检查(与Stackoverflow相同)将“好”爬虫列入白名单。 为了防止列入白名单的引擎将站点地图索引内容公开,我添加了这个头文件(Stackoverflow忘记了它): header('Content-type: application/xml; charset="UTF-8"', true); header('Pragma: no-cache'); header('X-Robots-Tag: NOARCHIVE'); 问题1:我错过了什么来保护网站地图索引文件? 问题2:问题来自生成的静态站点地图(.xml.gz)文件。 我怎样才能保护他们? 即使他们有一个“难以猜到”的名字,他们可以很容易地find一个简单的谷歌查询(例如:“ 网站:stackoverflow.com filetype:xml ”),我有一个非常有限的访问.htaccess。 编辑:这不是一个服务器configuration问题。 首选语言是PHP。 编辑2:对不起,这是纯粹的程序化问题,但它已被转移,所以我不能closures/删除它。 🙁

PHP写弃用错误到Apache错误日志

我刚刚从Debian Lenny升级到Squeeze,注意到我的/var/log/apache2/errors.log正在遭受以下错误的轰炸: <b>Warning</b>: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br /> <br /> <b>Warning</b>: Directive 'register_globals' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br /> 我觉得这很奇怪,因为这是一个系统日志和PHP(通过Apache)正试图写入HTML代码。 这似乎发生在服务器上的每个页面加载(包括任何虚拟主机)上。 将这些值设置为关是不是一个选项(我正在运行一个未维护的代码库)。 我的php.ini包含其他内容: error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED display_errors = On register_globals = On magic_quotes_gpc = […]

Rsyslog重复日志(rsyslog.conf和rsyslog.d / something.conf)

我使用local0创build了一个自定义日志(PHP发送日志条目到rsyslog )。 它使用一个新的自定义文件( /var/log/sea.log )。 问题是日志正在发送到/var/log/sea.log /var/log/messages和/var/log/syslog 。 我如何防止这种情况发生? 我只需要将日志发送到/var/log/sea.log 。 /etc/rsyslog.conf : # /etc/rsyslog.conf Configuration file for rsyslog. # # For more information see # /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html ################# #### MODULES #### ################# $ModLoad imuxsock # provides support for local system logging $ModLoad imklog # provides kernel logging support #$ModLoad immark # provides –MARK– message capability […]

你可以依靠Nginx作为你唯一的PHP / MySQL的networking服务器

你可以依靠Nginx作为你唯一的networking服务器。 就性能而言,我知道它运行良好,但是它在安全性方面又如何呢? 我知道Apache是​​稳定的,有ModSecurity。 Nginx不是这种情况。 我将使用Nginx作为唯一的Web服务器,并且仅用于dynamic内容。 我的所有静态内容都由CDN提供。

使RHSCL PHP在全球范围内可用的最佳途径

我已经使用以下url安装了RHSCL 2: https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/2/html/2.0_Release_Notes/chap-Installation.html 使用RedHat订阅pipe理器。 然后,我跑yum remove php*然后yum install rh-php56 一切都很顺利,除了现在找不到PHP。 然后我运行find / -name php ,在以下目录中findrh-php56 : /var/opt/rh/rh-php56/lib/php /opt/rh/rh-php56/register.content/var/opt/rh/rh-php56/lib/php /opt/rh/rh-php56/root/usr/bin/php /opt/rh/rh-php56/root/usr/lib64/php /opt/rh/rh-php56/root/usr/share/php 将这些二进制文件放到/usr/bin或其他所有用户通常可用的目录中的最好方法是什么? 我在安装软件包时错过了一个步骤,这就是为什么它不能在全球范围内使用? 或者,这只是使用RHSCL时会发生什么? 我testing了这些文件夹中的二进制文件,他们工作时,我运行php -v所以它工作正常。 我的第一个想法是把cp放到/bin或者/usr/bin但是也许有一种正式的方式来做我想问的东西? 编辑 不能发表评论,没有代表…从我张贴的链接的第3章,它说,软件收集包必须像这样运行: scl enable rh-php56 'php -v' 哪些工作…但是我怎么得到它运行像$ php -v所有用户没有额外的命令。 我需要全局可用的PHP二进制文件,所以web服务器可以使用它和普通shell ssh用户。

我的第一台服务器的任何安全提示? (完全初学者)

我正在为VPS付费,并希望在未来几天内启动我的第一个网站。 我担心标准设置中可能会有一些明显的安全漏洞,所以我很想得到一些提示。 关于我唯一知道的是closuresPHP中的错误报告,并创buildMySQL的用户/权限。 还有更多的东西吗? 我在用着: cPanel和WHM CentOS 5 PHP MySQL的 谷歌应用程序作为邮件服务器(所以也许我应该禁用内置的邮件服务器?)

如何在CentOS上使用yum将PHP 5.1升级到PHP 5.3

使用百胜/ CentOS。 问题是php 5.1已经安装并运行了 百胜更新的PHP 不工作! 我环顾networking的解决scheme,但他们说要做到上述= /