Questions tagged «php»

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

2
如果PHP在Apache,Nginx或其他Web服务器上运行,如何检测?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使其成为服务器故障的主题。 2年前关闭。 首先我知道这个变量: _SERVER["SERVER_SOFTWARE"] 在我的一个应用程序中,我想从PHP脚本检查运行它的Web服务器。基本上,它将是一个wordpress插件,它将帮助Blogger进行一些配置。 我为Apache&Nginx创建了单独的流程,并且还在考虑将代码作为2个不同的wordpress插件发布。 然后我只是想知道PHP中是否有一种FULLPROOF方法来完美地检测Web服务器。 请考虑所有情况:: Apache,Nginx,Apache + Nginx,PHP作为Apache模块,使用fastcgi的PHP,php-fpm,lighttpd,IIS等。 对于我的应用程序检测连击和代理的存在也很关键。 谢谢, -拉胡尔

3
设置用于安全本地托管的Linux机器的A到Z
我正在将计算机重新安装操作系统的过程中,该计算机将用于为我们的业务托管几个应用程序。这些应用程序将仅在本地;来自外部客户端的访问将仅通过VPN。 先前的设置使用了主机控制面板(Plesk)来管理大多数管理员,而我当时正在考虑使用另一种类似的软件进行重新安装-但我认为我应该最终了解其所有工作原理。我可以做软件可以为我做的大部分事情,但是我对这一切的共生性还不清楚。这是所有尝试,如果可能的话,进一步使自己远离Configuration Programmer / Programmer。 我在任何地方都找不到完整的演练,因此我想我要提出这个问题,并且如果有人可以在我的帮助下帮助我编辑答案并记录进度/陷阱。希望有一天这将帮助某人。 细节: CentOS 5.5 x86_64 httpd:Apache / 2.2.3 MySQL:5.0.77(待升级) PHP:5.1(待升级) 要求: 安全!! 安全的文件传输 安全的客户端访问(SSL证书和CA) 安全的数据存储 安全连接到另一台本地计算机(MySQL) 虚拟主机/多个子域 本地电子邮件会很好,但并不重要 步骤: 下载最新的CentOS DVD-iso(种子对我来说很棒)。 安装CentOS: 在安装过程中,我检查了Server Components选项,以为我将要使用另一个类似Plesk的管理员。事后看来,考虑到我已经决定尝试自己的方式,这可能不是最好的主意。 基本配置: 设置用户,网络/ IP地址等。Yum更新/升级。 升级PHP / MySQL: 要将PHP和MySQL升级到最新版本,我不得不寻找CentOS之外的另一个仓库。IUS看起来很棒,我很高兴找到了它! 将IUS存储库添加到我们的包管理器中 cd /tmp wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm rpm -Uvh epel-release-1-1.ius.el5.noarch.rpm wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-4.ius.el5.noarch.rpm rpm -Uvh ius-release-1-4.ius.el5.noarch.rpm yum …
12 apache-2.2  mysql  php  ssh  centos 

2
改善我们的部署策略
我们有一个在公司开发的电子商务应用程序。它是我们开发和运行大约3年的合理标准的LAMP应用程序。我们在测试域上开发应用程序,在这里我们添加了新功能并修复了错误等。我们的错误跟踪和功能开发都在托管的Subversion解决方案(unfuddle.com)中进行管理。当报告了错误时,我们在测试域上进行了这些修复,然后在满意的情况下将更改提交到svn。我们遵循相同的步骤,但增加了新功能。 值得指出的是我们的系统和跨服务器的应用程序的一般体系结构。每次开发新功能时,我们都会使用我们的应用程序(始终由我们控制服务器)将此更新发布到所有站点。使用我们系统的每个站点基本上都使用完全相同的文件来获取95%的代码库。每个站点中都有几个文件夹,其中包含该站点定制的文件-css文件/图像等。除了每个站点之间的差异之外,每个站点之间的差异是由每个站点数据库中的各种配置设置定义的。 这涉及到实际的部署本身。当我们准备推出某种更新时,我们会在测试站点所在的服务器上运行命令。这将执行复制命令(cp -fru / testsite / / othersite /),并通过每个vhost强制根据修改后的日期更新文件。我们托管的每个其他服务器都有一个虚拟主机,我们将生产代码库同步到该虚拟主机,然后在该服务器上的所有站点上重复复制过程。在此过程中,我们将不想覆盖的文件移出,在复制完成后将它们移回。我们的发布脚本执行许多其他功能,例如应用SQL命令更改每个数据库,添加字段/新表等。 我们越来越担心我们的过程不够稳定,不能容错并且还有些蛮力。我们也意识到我们没有充分利用Subversion,因为我们有一种立场,即使用新功能会阻止我们推出重要的错误修复程序,因为我们没有使用分支或标签。我们在服务器之间进行了如此多的文件复制,这似乎也是错误的。我们也无法轻松地对刚刚推出的内容进行回滚。我们确实在每次推出之前都执行了diff操作,因此我们可以获得将要更改的文件的列表,因此我们知道之后所做的更改,但是回滚的过程仍然存在问题。在数据库方面,我已经开始研究dbdeploy作为潜在的解决方案。不过,我们真正想要的是有关如何改善文件管理和部署的一些常规指导。理想情况下,我们希望文件管理更紧密地链接到我们的存储库,以便将首次推出/回滚与svn连接起来。类似于使用export命令来确保站点文件与回购文件相同。但是,如果该解决方案也可以停止我们服务器周围的文件复制,那也很好。 忽略我们当前的方法,听到其他人如何解决相同的问题真的很好。 总结... 使多台服务器中的文件与svn保持同步的最佳方法是什么? 我们应该如何防止文件复制?符号链接/其他? 我们应该如何构造我们的仓库,以便我们可以开发新功能并修复旧功能? 我们应该如何触发部署/回滚? 提前致谢 编辑: 最近,我读到了很多关于将Phing和Capistrano用于此类任务的好东西。任何人都可以提供有关它们的更多信息以及它们在这种任务中的表现如何?

4
如何在Linux / Apache / PHP上启用SQLite?
要在我的Windows / Apache / PHP设置上启用SQLite,请取消注释php.ini文件中的以下几行,然后重新启动Apache: extension=php_pdo.dll extension=php_pdo_sqlite.dll 现在,我有了一个带有Suse Linux 10.3的VPS,并且自动设置了Apache / PHP。查看php.ini文件进行上述更改,我发现Linux上的情况有些不同: 没有取消注释扩展的列表 我找到了“ extension_dir = /usr/lib/php5/extensions”,但在此目录中仅找到: pdo.so pdo_mysql.so 如何在此Linux环境中启用SQLite?
12 linux  php  php.ini  sqlite 

5
Linux上的PHP:如何使PHP使用代理设置来连接到Internet?
我的服务器位于局域网中,并通过代理服务器连接到Internet。我的PHP应用程序(Drupal)应该能够通过PHP代码检查更新。如何设置代理服务器设置为PHP,使其正常工作? 注意:我知道我可以在curl或其他设置代理设置。但情况是该代码不是我的,我也不想更改它。我只想使PHP始终通过特定的代理设置连接到Internet。
12 linux  php  proxy 

5
如何在Linux ubuntu上配置PHP CLI以作为www-data运行?
我在Ubuntu上有一个symfony2应用程序。Symfony有很多有用的控制台命令(例如php app/console cache:clear或php app/console assets:install web)。 问题是,如果我以root用户身份运行它们,则新生成的文件将具有root:root用户/组,并且如果我访问我的网站,则会收到错误消息(因为apache无法读取/修改这些文件->它们应该具有www-data:www-data)。 运行chown www-data:www-data可以解决问题,但是每次清除缓存时都无法运行。 如何配置PHP CLI始终以www-data用户/组身份运行? 要么 如何以其他用户身份(以root用户身份,以www-data身份运行)运行命令?

4
PHP:提供文件供下载,但不提供直接链接
我想提供发票下载。目前,我正在使用一种简单的编号方案(invoice-01.pdf,invoice-02.pdf等)。我知道我可以使用哈希代替来遮盖数据。 是否可以通过不直接让用户指向发票来使用PHP来提供发票?
12 php 

5
Docker-分别缩放Nginx和php-fpm
我一直在玩docker和docker-compose,有一个问题。 目前我的docker-compose.yml看起来像这样: app: image: myname/php-app volumes: - /var/www environment: <SYMFONY_ENVIRONMENT>: dev web: image: myname/nginx ports: - 80 links: - app volumes_from: - app 应用程序包含端口9000上的php-fpm和我的应用程序代码。Web是nginx,具有一些配置。 这可以实现我期望的功能,但是为了将nginx连接到php-fpm,我有这条线: fastcgi_pass app:9000; 我如何有效地扩展呢?例如,如果我想运行一个nginx容器,但运行三个app容器,那么我肯定要有三个php-fpm实例,所有实例都试图在端口9000上侦听。 如何在每个给定时间将每个php-fpm实例放在不同的端口上,但仍然知道它们在我的nginx配置中的位置? 我采用错误的方法吗? 谢谢!
11 nginx  php  php-fpm  docker 

2
Nginx + PHP-FPM产生502错误的网关而不是致命错误?
我目前正在使用Nginx和PHP-FPM测试Symfony2。我也使用Xdebug。 Symfony2带有演示包,我想通过在Acme / Demo包中创建语法错误来测试Symfony 2.2.0附带的致命错误的新处理。为什么我这样做,服务器响应是502错误的网关。 但是,如果我在app_dev.php文件中犯了语法错误(因此在触发框架之前),那么Xdebug会告诉我致命错误。 令人惊讶的是,如果我修复了该错字,然后在Acme / Demo捆绑包中重新创建了语法错误,那么Symfony错误处理程序将按预期方式出现。最后,如果修复了所有的错字(页面都可以工作),然后再次重新创建相同的错字(再次出现在Acme / Bundle中),我将得到一个错误的网关。 您对此有任何线索吗?
11 php  nginx  php-fpm  xdebug  symfony 

3
为什么会有那么多的gettimeofday通话?
为什么PHP / Apache组合会执行那么多gettimeofday系统调用?即使很快,每个呼叫都是应该考虑的呼叫。 快速介绍strace -c -p [apache2 process id]以下内容: Process 22294 detached % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 98.52 0.010000 51 196 poll 1.48 0.000150 0 20752 gettimeofday 0.00 0.000000 0 94 7 read 0.00 0.000000 0 48 write 0.00 0.000000 0 96 …
11 apache-2.2  php 

5
如何在CentOS 5.7 64位上为PHP 5.3.3安装mcrypt?
我安装了php 5.3和一些模块 yum install php53-{module-name} 但是mcrypt无效。 我这样搜索: yum list php* | grep mcry 出现的唯一包裹是 php-mcrypt.x86-64 5.1.6-15.e15.centos.1 extras 我对mhash有同样的问题。php的结果更加令人困惑。 我知道这可能是一个愚蠢的问题,但任何帮助将不胜感激。我习惯了Ubuntu的简单“ apt-get install”,一切正常。CentOS似乎更注重细节。 谢谢。 编辑:这是我尝试的: yum install php53-mcrypt 结果: No package php53-mcrypt available 并尝试这样做: yum install php-mcrypt 结果是: Error: php53-common conflicts with php-common 因为php-mcrypt试图获取php-common作为依赖项(?),而我试图在CentOS 5.7上使用php 5.3而不是默认的php 5.1。

5
Nginx-将所有请求路由到单个脚本
我有一个PHP脚本,可以处理脚本路由并完成各种花哨的事情。它最初是为Apache设计的,但我正尝试将其迁移到Nginx,以供我使用。现在,我正在尝试在测试服务器上进行平滑处理。 因此,脚本的工作方式是使用.htaccess文件拦截目录(在Apache中)的所有HTTP通信。看起来像这样: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.+$ index.php [L] </IfModule> 非常简单。所有请求都通过index.php,简单而简单地运行。 我正在模仿nginx上的这种行为,但是我还没有找到方法。有人有什么建议吗? 这是我目前的nginx.conf文件副本。请注意,它是为我设计的,只是试图使其正常工作。主要是复制/粘贴作业。 user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { include /etc/nginx/mime.types; default_type text/plain; include /etc/nginx/conf.d/*.conf; server { listen 80; server_name swingset.serverboy.net; …
11 php  nginx 

8
如何使用远程SMTP配置php.ini?
如何配置PHP以通过远程SMTP服务器使用mail()发送邮件? 我尝试使用php.ini进行此操作,但看来您只能在Windows32下进行此操作,而我想在Unix服务器上进行此操作。 另外,我尝试过更改sendmail的配置,以便它将使用远程SMTP服务器,但我不确定是否可以。
11 php  smtp  sendmail  php.ini 

2
使php mail()函数在ubuntu服务器上工作的步骤是什么?
我想在Ubuntu服务器上启用简单的php mail()函数。这将仅用于发送管理资料和日志。这是我要在此计算机上使用的所有邮件功能。 1)您能否命名1或2个易于设置的标准ubuntu软件包,以便我使用?应该占用很少的资源和很少的依赖关系。为此目的,最常用的软件包是哪些?我要使用它的优缺点是什么?(这台机器将永远不会收到邮件。) 2)选择邮件程序包后,如何从命令行对其进行测试?我必须允许传出连接到远程端口25是否正确? 3)是否有任何步骤确保php现在可以将其用于mail()函数? 我希望以此作为以后可以安装服务器的秘诀,因此了解出什么问题以及如何处理它会很有趣。 编辑:我最后安装了sendmail,并删除了exim4。PHP mail()在那之后工作了。所以对我来说sendmail似乎比exim4容易。以前安装了exim4的php5没有发送邮件。
11 php  email  ubuntu  sendmail 

3
将Apache虚拟主机与系统其余部分隔离
我正在设置一个Web服务器,该服务器将托管许多不同的网站,如Apache VirtualHosts,每个网站都可以运行脚本(主要是PHP,其他可能是possiblu)。 我的问题是如何将这些VirtualHost彼此隔离以及与系统其余部分隔离?我不希望网站X例如读取网站Y的配置或任何服务器的“私有”文件。 目前,我已按照此处所述使用FastCGI,PHP和SUExec设置了VirtualHosts(http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html),但是SUExec仅阻止用户编辑/执行他们自己以外的文件-用户仍然可以读取敏感信息,例如配置文件。 我已经考虑过删除服务器上所有文件的UNIX全局读取权限,因为这样可以解决上述问题,但是我不确定是否可以安全地执行此操作而不中断服务器功能。 我也研究了使用chroot,但似乎只能在每个服务器上完成,而不能在每个虚拟主机上完成。 我正在寻找将我的VirtualHost与系统其余部分隔离的任何建议。 PS我正在运行Ubuntu 12.04服务器 我的回答:我几乎按照当前配置进行了操作,但是对所有虚拟主机都进行了chroot监禁,例如,将chroot监禁入其中/var/www,然后将所有用户数据放在子文件夹中,每个子文件夹均具有组/其他r / w / x权限禁用的。该选项是可取的,特别是因为无需修改源代码就可以实现。 我选择了@Chris的答案,因为它是经过彻底编写的,并且还考虑了FTP和SELinux

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.