GAE PHP realpath返回false,具体取决于代码的部署方式

时间:2014-07-29 18:42:56

标签: php git google-app-engine

我遇到了Google App Engine和PHP realpath功能的问题。当我使用git部署时,realpath函数在访问wordpress css目录时不起作用,但在使用命令行sdk部署时确实有效。除了部署的版本之外,两个代码库都是相同的。我还验证了文件在git中是正确的,并且在直接访问它们时从项目控制台代码浏览器中可见。

我将此作为我的测试代码

<?php
print '<pre>';
$file = __FILE__;
$realpath = realpath( $file );
print 'File: ' . $file . "\n";
print 'Realpath: ' . $realpath . "\n";
var_dump( $realpath );

$file = __DIR__ . '/wordpress/wp-includes/';
$realpath = realpath( $file );
print 'File: ' . $file . "\n";
print 'Realpath: ' . $realpath . "\n";
var_dump( $realpath );

$file = __DIR__ . '/wordpress/wp-includes/css/';
$realpath = realpath( $file );
print 'File: ' . $file . "\n";
print 'Realpath: ' . $realpath . "\n";
var_dump( $realpath );

$file = __DIR__ . '/wordpress/wp-includes/css/dashicons.min.css';
$realpath = realpath( $file );
print 'File: ' . $file . "\n";
print 'Realpath: ' . $realpath . "\n";
var_dump( $realpath );
print '</pre>';
?>

当我访问git部署版本时,我看到:

File: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/test.php
Realpath: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/test.php
string(66) "/base/data/home/apps/s~peak-eon-630/wp.377596938324631222/test.php"
File: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes/
Realpath: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes
string(79) "/base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes"
File: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes/css/
Realpath: 
bool(false)
File: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes/css/dashicons.min.css
Realpath: 
bool(false)

当我访问命令行sdk部署版本时,我看到:

File: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/test.php
Realpath: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/test.php
string(68) "/base/data/home/apps/s~peak-eon-630/test.377596986549195338/test.php"
File: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/
Realpath: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes
string(81) "/base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes"
File: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css/
Realpath: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css
string(85) "/base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css"
File: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css/dashicons.min.css
Realpath: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css/dashicons.min.css
string(103) "/base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css/dashicons.min.css"

我的app.yaml看起来像这样:

application: peak-eon-630
version: wp
runtime: php
api_version: 1
threadsafe: true

handlers:
- url: /(.*\.(htm|html|css|js))$
  static_files: wordpress/\1
  upload: wordpress/.*\.(htm|html|css|js)$
  application_readable: true

- url: /wp-content/(.*\.(ico|jpg|png|gif|svg))$
  static_files: wordpress/wp-content/\1
  upload: wordpress/wp-content/.*\.(ico|jpg|png|gif|svg)$
  application_readable: true

- url: /(.*\.(ico|jpg|png|gif))$
  static_files: wordpress/\1
  upload: wordpress/.*\.(ico|jpg|png|gif)$
  application_readable: true

- url: /wp-admin/(.+)
  script: wordpress/wp-admin/\1
  secure: always

- url: /wp-admin/
  script: wordpress/wp-admin/index.php
  secure: always

- url: /wp-login.php
  script: wordpress/wp-login.php
  secure: always

- url: /wp-cron.php
  script: wordpress/wp-cron.php
  login: admin

- url: /xmlrpc.php
  script: wordpress/xmlrpc.php

- url: /wp-(.+).php
  script: wordpress/wp-\1.php

- url: /test.php
  script: test.php

- url: /(.+)?/?
  script: wordpress/index.php

skip_files:
- ^(.*/)?\.zip$
- ^(.*/)?\.bat$
- ^(.*/)?\.sh$
- ^(.*/)?\.md$
- ^(.*/)?node_modules/.*

0 个答案:

没有答案