Questions tagged «php»

PHP是一种通用脚本语言,特别适合于Web开发。在线手册是有关语言语法的绝佳资源,并且具有大量内置和扩展功能列表。大多数扩展都可以在PECL中找到。


6
使用Apache时PHP的DOCUMENT_ROOT变量中的尾随斜杠不一致
在不同的服务器环境中,PHP $_SERVER['DOCUMENT_ROOT']super global有时带有斜线,有时没有。我以为这个问题与文件中如何DocumentRoot定义Apache直接相关httpd.conf: 即我会认为,如果不httpd.conf包含斜杠: <VirtualHost *:8880> DocumentRoot /var/www/live/current ... 然后echo $_SERVER['DOCUMENT_ROOT']应该给/ var / www / live / current 如果httpd.conf包含斜线: <VirtualHost *:8880> DocumentRoot /var/www/live/current/ ... 然后echo $_SERVER['DOCUMENT_ROOT']应该给/ var / www / live / current / 在Ubuntu 10.04上就是这种情况,但是在RHEL 5.5上,$_SERVER['DOCUMENT_ROOT']即使在Apache上未定义,也添加了斜杠。 知道为什么会这样吗?我是否缺少配置参数? 以供参考: RHEL的PHP​​ 5.3.3(发生):PHP 5.3.3(CLI)(建立:2010年7月23日16:26:53) PHP版本的Ubuntu(没有问题):带有Suhosin-Patch的PHP 5.3.2-1ubuntu4.2(cli)(内置:2010年5月13日20:03:45)

8
如何确定正在使用哪个PHP?
如何确定正在使用哪个PHP? 例如,如果有/usr/local/bin/php和usr/local/bin/php5,我怎么知道我的PHP脚本正在使用哪一个?
10 php 


8
多站点托管-错过了使站点彼此安全的重要漏洞吗?
编辑#2,2015年7月23日:寻找一个新的答案,以识别在以下设置中缺少的重要安全项目,或者可以给出理由相信所有内容均已涵盖。 编辑#3,2015年7月29日:我特别在寻找可能的配置错误,例如无意中允许某些可被利用来规避安全限制或更糟的东西,但仍未解决的问题。 这是多站点/共享主机设置,我们希望使用共享的Apache实例(即在一个用户帐户下运行),但每个网站的用户都使用PHP / CGI运行,以确保没有站点可以访问另一个站点的文件,我们希望确保没有遗漏任何内容(例如,如果我们不了解符号链接攻击防护)。 这是我到目前为止的内容: 确保PHP脚本以网站的Linux用户帐户和组身份运行,并且被监禁(例如使用CageFS)或至少使用Linux文件系统权限进行了适当限制。 使用suexec以确保CGI脚本不能以Apache用户身份运行。 如果需要服务器端包含支持(例如shtml文件中的支持),请使用它Options IncludesNOEXEC来防止CGI在您不希望的时候运行(尽管使用suexec并不会引起太大的关注)。 拥有symlink攻击保护功能,这样黑客就不会欺骗Apache以纯文本形式提供另一个网站的文件,也不会泄露DB密码之类的可利用信息。 配置AllowOverride/ AllowOverrideList以仅允许黑客无法利用的任何指令。如果上述各项处理正确,我认为这不必担心。 如果MPM ITK没那么慢并且没有以root身份运行,我会选择它,但是我们特别想使用共享的Apache,但要确保它安全地完成。 我找到了http://httpd.apache.org/docs/2.4/misc/security_tips.html,但是它在该主题上并不全面。 如果有帮助,我们计划将CloudLinux与CageFS和mod_lsapi结合使用。 还有什么要确保做或知道的吗? 编辑2015年7月20日:人们已经提交了一些很好的替代解决方案,这些解决方案通常都很有价值,但是请注意,此问题仅针对共享Apache设置的安全性。特别是上面没有提到的东西可以使一个站点访问另一个站点的文件或以某种方式危害其他站点吗? 谢谢!

2
php-fpm向nginx返回空响应
nginx使用/etc/nginx/fastcgi_paramslocation块中的标准通过fastcgi连接到php-fpm 。 当使用从命令行连接到/.status(php-fpm.ini :: ping.path)时cgi-fcgi -bind,结果将按预期返回(X-Powered-By设置,响应正文等)。 当使用nginx请求时,结果返回为空(X-Powered-By设置,没有正文长度或内容)。nginx返回200,因为它得到了“有效”的响应。 监视tcpdump,我在其FCGI标头中隔离了对奇偶校验的请求(减去仍由Shell设置的与用户相关的env变量)。
9 php  nginx  php-fpm  fastcgi 

2
只允许在指定的虚拟主机上访问PhpMyadmin
我正在一个多虚拟主机环境上工作。我已经为Mysql Remote Control安装了PhpMyadmin。 环境配置如下: one.domain.com two.domain.com onlyphpmyadmin.domain.com 现在,如果我访问三个域之一 http://one.domain.com/phpmyadmin/ http://two.domein.com/phpmyadmin/ http://onlyphpmyadmin.domain.com/phpmyadmin/ 结果相同,则允许访问Phpmyadmin。 目标是在下面获得这种情况 http://one.domain.com/phpmyadmin/ --> access denied http://two.domein.com/phpmyadmin/ --> access denied http://onlyphpmyadmin.domain.com/phpmyadmin/ -->access allowed 没有类似的黑客 <?php if($_SERVER['HTTP_HOST'] != 'onlyphpmyadmin.domain.com') die('access denied'); ... ?> 在某些Phpmyadmin文件上。 这是我的Phpmyadmin配置文件 Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php <IfModule mod_php5.c> AddType application/x-httpd-php .php php_flag …

2
达到可怕的256个最大连接数后的处理方法Apache Limit
在尝试弄清楚为什么即使服务器资源正常的情况下我的站点响应仍然这么慢之后,我终于检查了Apache的状态并发现: 78 requests/sec - 0.7 MB/second - 8.5 kB/request 256 requests currently being processed, 0 idle workers 看来我的apache在连接方面实在是太累了。任何试图访问我的网站的人都会被列入“等待名单”,直到Apache再次免费。 看来我有两个选择。 A)将最大连接限制提高到256以上。尽管根据本文所述,这并不容易: 默认情况下,MaxClients参数的编译硬限制为256。但是,可以通过重新编译Apache来更改此参数。一些发行版或托管公司将此限制提高到非常高的值,例如512甚至1024,以应付较大的负载。 B)找到占用太多时间的脚本。对我来说,这似乎更加棘手,因为大多数apache进程只是出现然后又消失。另外,我的站点的PHP脚本已进行了很好的优化……并且再次,服务器资源很好: Server load 2.69 (8 CPUs) Memory Used 25.33% (2,039,108 of 8,048,804) Swap Used 1.32% (54,156 of 4,095,992) 我应该选择哪个选项(如果有),应该怎么做? 编辑 详细信息:服务器版本:Apache / 2.2.23(Unix)mod_ssl / 2.2.23 OpenSSL / 1.0.0-fips DAV …
9 apache-2.2  php  http  lamp 

5
如何设置后缀以将电子邮件存储在文件中而不是中继它?
我想在本地环境上运行生产服务器的暂存副本。该系统运行一个PHP应用程序,该应用程序会在各种情况下向客户发送电子邮件,并且我想确保从暂存环境中不会发送过任何电子邮件。 我可以调整代码,使其使用虚拟电子邮件发件人,但我想运行与生产环境完全相同的代码。我可以使用其他MTA(Postfix就是我们在生产中使用的MTA),但是我想要在Debian / Ubuntu下易于设置的东西:) 因此,我想设置本地Postfix安装,以将所有电子邮件存储在(一个或多个)文件中,而不是中继它。实际上,只要检查发送的电子邮件是可行的,我并不在乎它的存储方式。甚至一个告诉postfix将电子邮件保留在邮件队列中的设置选项都可以工作(当我用生产中的副本重新加载登台服务器时,可以清除队列)。 我知道这是有可能的,只是我似乎还没有在网上找到任何好的解决方案来解决这相当普遍的需求。 谢谢!

3
AWS RDS连接数
我正在将AWS RDS与MySQL一起用于一个项目,并且有一个“大型”实例。该文档对于计算资源和RAM的意义是明确的,但是我找不到任何可以记录多少个开放数据库连接的文档。我正在使用的应用程序是PHP,它利用具有持久连接的PDO。这意味着打开的连接数可以达到在任何给定点运行的PHP子进程的最大数量。如何确保我的RDS实例的最大连接设置足够高,以使其满意?

3
IIS未显示详细的PHP错误-而是显示服务器故障500
我曾经从Apache服务站点,但现在不得不使用IIS服务器。 我的许多PHP页面都返回错误500,但由于IIS抑制了错误消息,所以无法调试。我已经尝试ini_set('display_errors',1);过代码,但无济于事。 错误显示在某些站点上,但没有特别显示我想要调试的站点,因此我认为这不是全局PHP设置,而是与该站点的站点设置有关。 对于如何启用显示的PHP错误,我找不到明确的答案。 我找到了此链接,但不确定在哪里可以找到“ system.webServer-> httpErrors ”。 如何在IIS下启用PHP中的显示错误?
9 php  iis 

1
当文件是PHP时,mod_headers不发送头文件
我将.htaccess文件设置为以下内容: Header set MyHeader "I'm Set!" 如果转到http://example.com/test/没有默认索引文件的目录(),并查看网络活动(在本例中为Chrome),则可以看到正在发送标头。如果我转到php文件(http://example.com/test/test.php),则不会发送标头。 我创建了一个index.html(仅<pre>Hi作为内容)并将其发送。我将文件名更改为.php,没有标题。如果我将orignal更改test.php为test.html,则会输出看起来很垃圾的代码,并发送标头。如果更改test.php为test.png,则会得到一个损坏的图像图标,并且将发送标题。 因此,如果没有对mime类型和文件扩展名进行以上测试,则似乎只有.php文件(合法或其他)设置为不应用.htaccess规则,或者特别是mod_headers指令。但是我不知道如何测试,因为它是一台共享服务器,所以我无权httpd.conf访问。 关于为什么Apache会跳过发送PHP文件头的任何想法? 我也尝试过: <FilesMatch "\.(php)$"> Header set MyHeader "I'm Set!" </FilesMatch>


2
我的服务器管理员希望我设置目录的公共写权限
我是Web开发的新手,所以请耐心等待。 我主要是iPhone开发人员,但最近使用共享托管为其他人创建了一个网站。我可以在该站点上用PHP很好地写文件,而不必考虑权限。 我正在为正在制作的新应用程序部署Web服务,但进展并不顺利。这里最重要的区别是我正在使用其他人的服务器,并且仅具有FTP / DB访问权限。 基本上,我拥有构成我的CMS的PHP文件,如下所示: mysite.com/admin/manage_news.php mysite.com/admin/manage_events.php 这些脚本然后可以编辑数据库或文件。它们可以与DB很好地交互,但是我的脚本无法写入文件系统。例如,他们可能尝试写入以下文件: mysite.com/data/img/event_1.png mysite.com/data/somefile.txt 这在我的MAMP安装(本地)上运行良好,但是一旦部署到服务器,PHP每次尝试写入时都会喷出错误……类似这样: 无法打开文件“ ../data/img/someimage.png”进行写入。 所以我给运行服务器的那个人发了电子邮件,他回来说: 经公众许可可以使用吗?(777) 而且,确实如此-但我对使用公共权限非常谨慎,因此请立即将其禁用。我给他发电子邮件说:“如何使我的PHP脚本使用标准用户权限编写”,他说: 将其保留为公共,会没事的 我认为这是域解析中某处的ip冲突,但我对此并不担心。 然后,我给他发送电子邮件说“肯定是不安全的”或类似的话,他回答了以下内容: 现实是,有数百万个网站,其中包括我管理的多个网站,这些网站的各个文件夹上都有777,这只是一种生活方式。 谁能给我一些我可以给他的解决方案的想法?还是我可以做些避免避免使用777的事情?我真的不喜欢我的网站/服务上的任何文件夹都是可公开写的。 我非常感谢您的建议,因为我对Web服务器了解甚少。

3
NGINX不执行PHP文件
我找不到答案。安装了PHP5 + NGINX + PHP-FPM并且无法执行php文件,它显示“糟糕!此链接似乎已损坏”。CHROME中的错误。我没有任何有价值的错误日志报告,我在根目录中确实有一个index.php,试图创建一个自定义phpinfo.php文件,但均无用。 我可以加载HTML文件,但不能加载PHP。 这是我在NGINX中的本地站点配置: server { listen 80; server_name im; access_log /var/www/website/access.log; error_log /var/www/website/error.log; location / { root /var/www/website; index index.html index.htm index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/website$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } 将所有目录的所有权更改为www-data:www-data,在php文件上制作了777,什么都没有。重新启动nginx,FPM,什么都没有。 帮帮我?:(
9 php  nginx 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.