我的开发人员只允许将一些文件下载到局域网用户。 我说好吧,这很简单,我写了像这样的nginxconfiguration的变化: location /restricteddir/download/file { allow 192.168.0.0/16; allow 10.0.0.0/8; deny all; } 好,从外面我得到403这样好,但从内部(LAN)给我404。为什么? 我已经检查过,磁盘上不存在文件的位置。 开发人员告诉我,这个位置是由phpdynamic生成的,所以文件在tmp目录中,但是当你点击如下链接之后: https://example.com/report/download/file/id/somefile.txt它应该开始下载,但它给404错误。 最后一个物理位置是/restricteddir/download所以file/id/somefile.txt是由php生成的。 为了testing,我将位置更改为/restricteddir/download ,之后https://example.com/restricteddir/download给了我404。 禁用限制后,我很困惑,所有目录工作正常,我可以从https://example.com/report/download/file/id/somefile.txt下载文件,然后按https://example.com/report/download/无404.那么错误在哪里? 我应该添加到我的nginxconfiguration,使其工作? EDIT1这是这个虚拟主机的完整configuration: #example.com:443 server { listen 443 default; ssl on; ssl_certificate example.crt; ssl_certificate_key example.key; ssl_session_timeout 15m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; server_name example.com; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; location / { root /sites/public; […]
我正在build立一个新的服务器,我怀疑我是否用SuPhp或mod_ruid2安装php / apache。 我之前和SuPHP有过很多麻烦,而且肯定比mod_ruid2慢。 但是,mod_ruid2与SuPHP一样安全吗? 当我使用mod_ruid2比安装SuPHP有更多的安全风险吗? 换句话说:mod_ruid2与SuPHP。 谁赢?
其中一个客户请求为他的网站个人php.iniconfiguration,所以我已经设置他的VirtualHost如下: <VirtualHost *:80> DocumentRoot "/home/alex/www.domain.tld" ServerName www.domain.tld AssignUserID alex alex PHPINIDir /home/alex/php.ini </VirtualHost> 客户端在/ home / alex /下创build了php.ini文件,其中只包含这个设置: session.save_path = "/home/alex/.php_sessions/" 毕竟他开始抱怨他看到其他客户的网站产生的所有其他会话文件。 在做了一些基本的故障排除之后,我意识到,他的php.ini设置正在影响httpd-vhosts.conf中指定的所有网站。 问题是为什么? 由于PHPINIDir只在一个特定的VirtualHost指定?
我在我的CentOs 6.3服务器上安装了PHP 5.3.3 ,由于这个版本的PHP现在很容易升级到PHP 5.4.11但是默认的CentOs版本库没有PHP > 5.3.3所以yum无法检测到新版本。 然后,我在我的服务器上安装了remi存储库 rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 这些命令成功安装了存储库 现在升级PHP的命令 yum –enablerepo=remi,remi-test update httpd mysql mysql-server php php-common 但它会失败,并显示下面的错误消息 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again 如果我尝试yum info php相同的错误信息 基本上安装这些存储库后yum不工作,但yum工作更早。 如果我删除这些存储库,并尝试yum没有任何错误的作品。 我怎样才能把PHP升级到PHP 5.4.11版本? […]
我有一个单独的域,其中根由uWSGI下运行的python应用程序提供服务。 然而,我需要在子文件夹/论坛/上运行PHP论坛。 我在apps-availableconfiguration文件中有以下内容: location / { try_files $uri @oath; } location @oath { include uwsgi_params; uwsgi_pass 127.0.0.1:3031; } location /forum/ { alias /home/drake/forum; index index.php; } location ~ /forum/(.*)\.php { include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } 然而, example.com/forum/ forum/被发送到uWSGI应用程序和example.com/forum/index.php ,同时被交给FastCGI,返回File not found. 并将以下内容logging到error.log : 2013/03/03 00:10:52 [error] 28102#0: *1 FastCGI sent in stderr: […]
我想干净的重新安装php5-cli , php5-common , php5-fpm 。 所以我做的是: rm -rf /etc/php5 rm -rf /usr/local/lib/php5 rm -rf /usr/local/php5 rm -rf /usr/lib/php apt-get autoremove php5* apt-get purge php5* 但重新安装后,我没有/etc/php5/cli/php.ini或/etc/php5/fpm/php.ini了。 我怎么能把他们拿回来? 我的安装命令: apt-get install php5-cli php5-comon php5-cli –force-yes -o Dpkg::Options::=–force-confmiss
我有Nginx安装程序来反向代理以.php结尾的所有文件。 在一些脚本中,我检查参数,并发送“406不可接受”作为一个通用的错误,这需要从Ajax的jQuery /拾起。 我可以改变这个错误,但我希望能够把它发送到客户端。 如果我发送406,Nginx会将其更改为502 Bad Gateway并注入它自己的错误消息。 它虽然适用于404和403,但这些错误在这种情况下并不真正“适用” 这是一个API,所以被禁止是不好的RESTful实践。 我尝试使用fastcgi_intercept_errors,但似乎没有区别。 我正在使用Nginx 0.7 。 PHP的一部分: header($_SERVER['SERVER_PROTOCOL'] . '406 Not Acceptable'); echo '{"error":"Missing Params"}'; exit; Nginxconfiguration location ~ .php$ { fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
我试图写一个单行程序来转换一些文件中存在的HTML实体(所有的HTML与UTF-8编码) 我试过recode HTML_4.0 file.htm但也转换非ASCII字符(它打破了UTF-8字符) 在StackOverflow中,我发现了一个适用于一个文件的东西: php -r '$f=@fopen("file.htm", "r");echo html_entity_decode(fread($f, 20000));fclose($f);' 但是当我尝试使它与多个文件 for fi in *.htm; do php -r '$f=@fopen("$fi", "r");echo html_entity_decode(fread($f, 20000));fclose($f);';done 我知道这里的问题是如何“逃避”$ fi(bashvariables),所以PHP不会将其读取为PHPvariables。 有什么build议?
我有一个基于Web的PHP电子邮件客户端( Roundcube ),我安装在UNIX服务器上,马上就产生了这个错误: Fatal error: Undefined class constant 'MYSQL_ATTR_FOUND_ROWS' in /path/to/file.php on line 134 这是这行代码: $result[PDO::MYSQL_ATTR_FOUND_ROWS] = true; 本地在我的Windows安装它工作正常,所以我比较这两个PDO类: <?php ReflectionClass::export('PDO'); 活的UNIX服务器上不存在MYSQL_ATTR_FOUND_ROWS属性和其他一些属性。 我通过对未知值进行硬编码做了一个快速修补,并且效果很好,但是我不能确定没有更多的错误(我们也不想使用被黑客入侵的版本)。 PDO类是绝对加载的,我们实际上需要启用它,以便首先安装带有MySQL / PDO选项的Roundcube。 似乎现场服务器的PDO类需要更新,我猜? 我没有直接控制现场服务器,但我可以给那些做的人的指示。 任何人都可以帮我弄清楚必须做什么? 这里是统计信息: 本地Windows Apache服务器(工作),PHP版本5.3.8 PDO类debugging输出: Class [ <internal:PDO> class PDO ] { – Constants [86] { Constant [ integer PARAM_BOOL ] { 5 } Constant [ integer […]
我正在尝试在VPS上安装CDash 。 通常在apache重新启动后,它会很好的工作,但是几分钟后,它会随机地出现以下错误: Warning: XSLTProcessor::importStylesheet(): I/O warning : failed to load external entity "/cdash/footer.xsl" in /cdash/cdash/common.php on line 55 Warning: XSLTProcessor::importStylesheet(): compilation error: file /cdash/ line 4 element include in /cdash/cdash/common.php on line 55 Warning: XSLTProcessor::importStylesheet(): xsl:include : unable to load /cdash/footer.xsl in /cdash/cdash/common.php on line 55 Warning: XSLTProcessor::importStylesheet(): I/O warning : failed to load […]