Articles of PHP

我怎样才能更新我的PHP DOCUMENT_ROOTvariables从VirtualDocumentRoot

我在我的虚拟主机configuration中使用VirtualDocumentRoot。 我的VirtualDocumentRoot设置为/ var / www /%1 /,如果我创build一个文件夹说testing,它按预期工作。 问题是,当我在我的php文件中使用$ _SERVER [“DOCUMENT_ROOT”]时,它正在重新调用/ var / www。 是否有可能让PHP返回$ _SERVER [“DOCUMENT_ROOT”]在VirtualDocumentRootconfiguration相同的path。

如何在nginx的sublocations中全局使用FastCGI和Basic Auth?

我最近部署了我的第一个nginx安装程序,一切工作真的很好,除了位置parsing驱使我疯了。 我有一个简单的PHP fastcgi设置像这样: location ~ \.php { if (!-e $request_filename) { return 404; } include /etc/nginx/fastcgi.conf; keepalive_timeout 0; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } 现在我想要像这样使用基本身份validation来保护一些位置: location /madmin { auth_basic "Restricted"; auth_basic_user_file /var/www/localhost/admincp/.htpasswd; } 在他的设置下,nginx在/ madmin时要求input密码,但是不会在/madmin/foo.php中提问。 如果我将auth位置更改为“location〜^ / madmin”,那么nginx会为php文件下载… 是不是可以在nginx中configuration多个位置? 如果没有,这里的解决方法是什么? 谢谢你的帮助。

PHP在Apache / Linux上输出缓冲区刷新问题

我遇到了Linux输出缓冲区在我的Linux Web服务器上刷新的问题。 输出缓冲区保持正确,所有正确的数据被推送到我的代码中,但通常的冲洗机制不会刷新到浏览器。 我已经尝试一切张贴在这里: http : //php.net/manual/en/function.flush.php但迄今没有成功。 我从php.net得到一个小脚本来testing它: <?php ob_start(); for($i=0;$i<70;$i++) { echo 'printing…<br />'; ob_get_flush(); flush(); usleep(300000); } ?> 这应该打印“打印…”70次,每三秒一行。 这对我的另一个基于Windows的testing环境(仍然使用apache,XAMPP包)工作得很好,但在我的Linux服务器上却没有。 在给浏览器提供任何东西之前,它等待脚本完成,基本上忽略了整个刷新命令。 如果任何人以前经历过这个,或者知道任何可以帮助的东西(无论是服务器configuration还是调整代码),都将不胜感激!

nginx用php-fpm下载php文件而不是在mac os x上执行它们(本地环境)

我无法让PHP文件在本地开发机器上执行。 我似乎已经成功安装了nginx,而且php-fpm似乎也正确安装,并且正在运行,但不能完全解决为什么PHP文件正在被下载而不是被执行。 在经历了许多小时的挫折之后 ,我想最好先问问以前可能做过的人! 我已尽力提供所有的信息,但如果有什么可能有用的或我错过了, 请不要犹豫,在评论中提问 。 请注意:仔细阅读我遇到的问题。 我之所以这么说,是因为我已经阅读了几乎所有可能与Google有关的问题,并尝试了几种不同的方法,修复,build议,重新安装,configuration等等。每个人都无法提供帮助修复甚至debugging我遇到的问题。 换句话说,这绝对不是一个重复的问题。 我花了几个小时阅读确保! 我已经使用https://github.com/josegonzalez/homebrew-php成功安装了nginx和php-fpm 。 良好的信任brew doctor确认一切都是最新的,我有一切必要的安装(XQuartz,Xcode命令行工具等)。 下面是一些文件的摘录,在试图了解我的设置时可能会有帮助: php-fpm日志 tail -f /usr/local/var/log/php-fpm.log [24-Dec-2013 00:05:59] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root [24-Dec-2013 00:05:59] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root [24-Dec-2013 00:05:59] NOTICE: […]

使Apache能够使用PHP作为DSO运行来写入PHP文件?

我有PHP作为一个DSO运行。 因此,我的安装程序脚本(写入configuration文件)不能写任何东西。 我如何给apache(user:nobody)写入文件的能力?

你如何设置PHP的CLI组件的最大执行时间?

你如何设置PHP的CLI组件的最大执行时间? 我有一个进入无限循环的CLI脚本,我不知道如何在不重新启动的情况下杀死它。 我用quicksilver启动它,所以我不能在命令行上按Ctrl + C。 我尝试运行ps -A (显示所有进程),但是php没有显示在列表中,所以也许已经超时了 – 但是如何手动设置时间限制? 我试图find关于应该在哪里设置max_execution_time设置的信息,我习惯将此设置为使用apache运行的PHP版本,但我不知道应该将其设置为位于/usr/bin的PHP版本/usr/bin 。 我确实看到了下面的引用,看起来是准确的(见下面的截图),但是执行时间不受限制似乎不是一个好主意。 请记住,对于CLI SAPI,max_execution_time被硬编码为0.所以它似乎被ini_set或set_time_limit更改,但实际上它不是。 我发现这个奇怪的决定的唯一参考是深入bugtracker( http://bugs.php.net/37306 )和php.ini(“max_execution_time”指令的注释)。 (通过http://php.net/manual/en/function.set-time-limit.php ) ini_set('max_execution_time')没有效果。 我也试过同样的事情,并用set_time_limit(7)得到相同的结果。 更新 所以似乎有三种方法来实现这一点: 在脚本中: 参数或者set_time_limit(10); // 这条路 ini_set('max_execution_time',10); //或者这样 或者在调用脚本时: php -d max_execution_time = 5 script.php 要回答我关于php.ini文件将从何处加载的问题,如果存在的话,那将来自/etc/php.ini 。 该文件还需要运行php脚本的用户可读,所以如果它是由root创build的,并且用户不能“读取”它,这意味着php可能无法“读取”它。 但是,似乎在/etc/php.ini设置的任何max_execution_time实际上都不会影响CLI脚本 – 即使正确加载了文件(使用phpinfo()查找) – 所以您必须使用其他方法之一上文提到的。 关于使用睡眠循环来testing这一点,我了解到,它不会工作。 set_time_limit()函数和configuration指令max_execution_time只影响脚本本身的执行时间。 在确定脚本运行的最长时间时,不包括使用system(),sleep()函数,数据库查询等在脚本执行之外发生的任何活动,如系统调用 检查出一个非常类似的问题上堆栈溢出问: https : //stackoverflow.com/questions/5874950/set-max-execution-time-in-php-cli

将自签名证书添加到Windows中cURL中的可信任证书?

我已经从这个页面上的说明创build了一个自签名的证书,已经安装了,它似乎都工作正常,但现在我需要cURL来信任它。 由于更高版本的cURL不包括.pem文件中的受信任列表,因此我在此处下载了.pem文件,然后在php.iniinput以下行: curl.cainfo = "C:\xampp\php\cacert.pem" 现在我需要知道的是,如何让cURL信任我的自签名证书? 我不需要任何浏览器来信任它,只需cURL。

configurationphp邮件()每个域

我在我的专用服务器(运行centos5)上有大约6个站点,所有使用php的邮件function发送的邮件都通过[email protected]发送,例如“Received:from nobody by servername.hostname.com with local(Exim 4.69) ”。 有没有办法改变这个来显示相应的域名?

从LSB初始化脚本w / start-stop-daemon启动一个PHP守护进程

我正在写一个LSB​​初始化脚本(无可否认,我从来没有从头开始)启动一个PHP脚本,守护自己。 PHP脚本开始如下所示: #!/usr/bin/env php <?php /* do some stuff */ 然后在init脚本中这样启动: # first line is args to start-stop-daemon, second line is args to php-script start-stop-daemon –start –exec /path/to/executable/php-script.php \ — –daemon –pid-file=$PIDFILE –other-php-script-args –daemon标志会导致php脚本作为一个守护进程自行分离和运行,而不是依靠start-stop-daemon来分离它。 这是如何(试图)停止在init脚本中: start-stop-daemon –stop –oknodo –exec /path/to/executable/php-script.php \ –pidfile $PIDFILE 问题是,当我试图停止通过初始化脚本,它给了我这个: $ sudo /etc/init.d/my-lsb-init-script stop * Stopping My Project No /path/to/executable/php-script.php found […]

我可以优化这些APC设置吗?

我想优化APC一些,但我不知道我可以做些什么。 首先这里是当前configuration运行一周后的屏幕截图: 我现在有以下几点我不确定: 我是否正确地看到碎片发生,因为caching也被用作用户caching? 为什么当我总共分配了192MB时,碎片条只能告诉我只有5.8MB的100%? 这只是一个渲染问题,“内存使用情况”下的圆圈没有完全closures? 因为下面的MB值加起来。 (要说的是,重启后,这个圆圈看起来不错,当caching变得越来越分散时,它就变成这样了。) 由于命中率真的很好,我不确定是否碎片是一个大问题。 你认为我还可以优化吗? 我最感兴趣的是回答这些问题。 只有这样我才能更好地理解APC,并自己做出调整。 一些详细信息:在这个服务器上运行的是Drupal和Magento。 Drupal也将其用作用户caching。 现在的问题是我如何优化它。 我可以分配更多的内存,但我不确定这是否真的有很大的帮助。 更新:这是configuration: ; The size of each shared memory segment in MB. apc.shm_size = 192M ; Prevent files larger than this value from getting cached. Defaults to 1M. apc.max_file_size = 2M ; The number of seconds a cache entry is […]