在移動端開啓XDebug調試PHP代碼

原理

將Http請求中追加XDEBUG_SESSION字段,激活php的xdebug功能。

php.ini

xdebug.remote_autostart = 1 # 重要
xdebug.remote_enable = On
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = "d:/work/wamp64/logs/xdebug-profiler.log"
xdebug.profiler_output_dir ="d:/work/wamp64/tmp"
xdebug.show_local_vars=0
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9001
;xdebug.remote_log="d:/work/wamp64/logs/xdebug.log"
xdebug.default_enable = "Off"
xdebug.remote_handler = "dbgp"
xdebug.idekey = PHPSTORM # 記住這個名字
xdebug.coverage_enable=0

OkHttp

import android.text.TextUtils;

import java.io.IOException;
import java.net.URLEncoder;

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

public class CookieInterceptor implements Interceptor {


  private UserStorage mUserStorage;

  public CookieInterceptor(UserStorage mUserStorage) {
    this.mUserStorage = mUserStorage;
  }

  @Override
  public Response intercept(Chain chain) throws IOException {
    Request original = chain.request();
    Request request = original.newBuilder()
          .addHeader("Cookie", "u=" + URLEncoder.encode(mUserStorage.getCookie()) + ";XDEBUG_SESSION=PHPSTORM") # 這個名字與上面的配置文件中的保持一致
          .build();
    return chain.proceed(request);
  }
}

WebView中

        // 設置xdebug cookies
        CookieManager.getInstance().setAcceptCookie(true);
        CookieManager.getInstance().setCookie(Constants.Base_URL, "XDEBUG_SESSION=PHPSTORM");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            CookieManager.getInstance().setAcceptThirdPartyCookies(wv_web, true);
            CookieManager.getInstance().flush();
        } else {
            CookieSyncManager.createInstance(this);
            CookieSyncManager.getInstance().sync();
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章