我有 PHP 作为 DSO 运行。因此,我的安装程序脚本(写入配置文件)无法进行任何写入。
我如何给 apache(用户:nobody)写入文件的能力?
根据较旧的问题,例如使用 mod_fcgid 而不是 mod_php和PHP 作为 CGI 或 Apache 模块?(和切向一些其它 问题),我来到了一个了解,运行PHP的CGI或FastCGI的将使我的PHP文件跑出作为所有者,而不是Apache的用户(即运行Apache的用户)。
该phpinfo();函数指出Server API = CGI/FastCGI
但是,当我测试正在运行的用户时,它仍然是apache ie。<?php echo exec('whoami'); ?>返回apache。
我还尝试了Jeremy Bouse在我提到的一个问题中建议的内容,但 PHPwhoami仍然返回apache。
phpinfo 的“服务器 API”等于“CGI/FastCGI”这一事实是否足以让普通用户以所有者身份运行 php 文件?
(它甚至表明 PHP 没有与 mod_php 一起运行吗?)
或者是否还有一些管理任务需要完成或可能配置错误?
我正在编写一个 lsb init 脚本(不可否认,我从未从头开始做过)它启动了一个守护进程的 php 脚本。php 脚本是这样开始的:
#!/usr/bin/env php
<?php
/* do some stuff */
Run Code Online (Sandbox Code Playgroud)
然后在 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
Run Code Online (Sandbox Code Playgroud)
该--daemon标志导致 php 脚本分离并作为守护程序本身运行,而不是依赖于start-stop-daemon分离它。
这就是它(试图)在 init 脚本中停止它的方式:
start-stop-daemon --stop --oknodo --exec /path/to/executable/php-script.php \
--pidfile $PIDFILE
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试通过 init 脚本停止时,它给了我这个:
$ sudo /etc/init.d/my-lsb-init-script stop
* Stopping My Project
No /path/to/executable/php-script.php found running; none killed.
...done.
Run Code Online (Sandbox Code Playgroud)
快速浏览一下ps告诉我,尽管 php …
我对 Web 开发还是很陌生,并且对安全性有疑问。
每天在我的CPanel中查看“最新访客”,今天出现了一些奇怪的条目(下面粘贴了一个)。
不知道有什么更好的,在我看来,由于某种原因,有一些网站将用户推荐给我的网站。有人可以解释一下这些到底是什么,是否需要担心?谢谢!
Host: 77.68.38.175
/?p=http://teen-37.net/myid.jpg?
Http Code: 404 Date: Feb 17 08:13:58 Http Version: HTTP/1.1 Size in Bytes: -
Referer: -
Agent: libwww-perl/5.805 *
/?p=../../../../../../../../../../../../../../../proc/self/environ%00
Http Code: 404 Date: Feb 17 08:13:59 Http Version: HTTP/1.1 Size in Bytes: -
Referer: -
Agent: libwww-perl/5.805
Run Code Online (Sandbox Code Playgroud) 我一直在使用和配置PHP,但现在我遇到了一个奇怪的问题,所以我要向你们寻求帮助。
我不想在生产服务器中看到弃用警告和通知,但是我想看到其他错误消息,例如语法错误。
我在 Ubuntu 10.10 上使用 Suhosin-Patch 运行 PHP 5.3.3-1ubuntu9.3
在我的/etc/php5/apache2/php.ini我有以下几行:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
Run Code Online (Sandbox Code Playgroud)
我已经重新启动了网络服务器。在虚拟主机配置中,没有 php_admin_value 与此配置混淆,文件夹中没有任何 .htaccess 文件。
尽管如此,仍会显示弃用警告和通知。
可能重复:
访问子文件夹中的 PHP 脚本时,“在 <fastCGI> 应用程序配置中找不到 <handler> scriptProcessor”
我在 IIS 7.5 上的 php 配置有问题。
它实际上是在 Win7 上使用 MS Web PI 进行的全新安装。
我创建了一个简单的php testpage。它在 root 级别http://localhost/test.php和第一个 sub-level 中工作http://localhost/site/test.php,但在http://localhost/site/subfolder/test.php,我收到 HTTP 500 错误:
<handler> scriptProcessor could not be found in <fastCGI> application configuration
一切似乎都按照http://www.iis.net/ConfigReference/system.webServer/fastCgi/application 中的规定进行配置
是否有某种过滤器可以禁用特定文件夹级别的处理/或仅在前 2 个级别启用它?
我应该检查什么?
我尝试使用以下命令安装 mysql PDO 驱动程序:
$ sudo pecl install pdo_mysql
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
WARNING: "pecl/PDO_MYSQL" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_mysql//ext/pdo_mysql"
WARNING: "pecl/PDO" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo//ext/PDO"
downloading PDO_MYSQL-1.0.2.tgz ...
Starting to download PDO_MYSQL-1.0.2.tgz (14,778 bytes)
.....done: 14,778 bytes
downloading PDO-1.0.3.tgz ...
Starting to download PDO-1.0.3.tgz (52,613 bytes)
...done: 52,613 bytes
12 source files, building
running: phpize
sh: phpize: not found
ERROR: `phpize' failed
7 source files, building
running: phpize
sh: phpize: not found
ERROR: `phpize' failed
Run Code Online (Sandbox Code Playgroud)
有人知道如何在 Ubuntu 10.04 中安装 …
让我先说这是本主题的后续问题。
通过将 memcached 服务器从 Solaris (SmartOS) 切换到 Ubuntu 来“解决”这个问题。现在我们已经将负载增加了大约 5 倍,并且再次遇到问题。
我们正在运行一个大约每分钟处理 1000 个请求的站点,每个请求以大约 3 次读取和 1 次写入命中 Memcached。所以负载大约是每秒 65 个请求。缓存中的数据总量约为 37M,每个键包含的数据量非常小(JSON 编码的整数数组,小于 1K)。
我们在这些页面上设置了一个基准测试脚本,并将数据输入 StatsD 进行记录。问题在于,Memcached 需要很长时间才能响应的峰值。这些似乎与流量高峰无关。

什么可能导致这些尖峰?为什么 memcached 会占用一秒钟的时间来回复?我们刚刚启动了第二台服务器以放入池中,它在峰值的频率或严重性方面没有任何明显的差异。
这是服务器上 getStats() 的输出:
Array
(
[-----------] => Array
(
[pid] => 1364
[uptime] => 3715684
[threads] => 4
[time] => 1336596719
[pointer_size] => 64
[rusage_user_seconds] => 7924
[rusage_user_microseconds] => 170000
[rusage_system_seconds] => 187214
[rusage_system_microseconds] => 190000
[curr_items] => 12578
[total_items] => 53516300
[limit_maxbytes] => 943718400
[curr_connections] => …Run Code Online (Sandbox Code Playgroud) 我有一个 web 服务器运行多个服务器(虚拟主机),使用 nginx 和 fastcgi 传递给 unix-socket。
我想要完成的是使用 beta.example.com 和 live.example.com 进行设置,其中实时站点的 error_reporting 已关闭(但仍记录到文件),而 beta 站点的 error_reporting 已打开。
因此,对于 Apache,我会在以下方面做一些事情:
<VirtualHost *:80>
ServerName beta.example.com
[...]
php_flag display_errors on
php_flag display_startup_errors on
php_value error_reporting -1
[...]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
在谷歌搜索时,我没有找到任何可以使用 fastcgi 将此类参数传递给 PHP 的地方。有谁知道如何做到这一点?
现在的配置是(简化):
server {
server_name beta.example.com;
[...]
fastcgi_pass unix:/var/run/nginx/php-fastcgi.sock;
fastcgi_index index.php;
}
Run Code Online (Sandbox Code Playgroud) 服务器信息(删除了 DNS 和 IP):
cat /proc/version && uname -a && java -version
Linux version 2.6.16.33-xenU (*************) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #2 SMP Wed Aug 15 17:27:36 SAST 2007
Linux ************* *************-xenU #2 SMP Wed Aug 15 17:27:36 SAST 2007 x86_64 x86_64 x86_64 GNU/Linux
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我有一些 PHP 代码正在读取 Excel 文件并进行字符串比较。由于似乎是语言环境问题,它在服务器上失败。然而,在我的本地机器(OSX 10.8.5 Mountain Lion)上,它可以工作!
在我的本地机器上,语言环境是 en_US.UTF-8。在服务器上,语言环境是 POSIX,但我将其更改为 en_US.utf8,因为当我查看locale -a时没有 en_US.UTF-8 …